2016-08-23 7 views
1

これは私が以前に尋ねたこの質問と同じように - Watir webdriver; counting elements with changing class namesです。私は、クラス名asset-card selectableを使って特定の数の要素を追加することができました。特定のクラス名のない要素の検索

現在、より多くの要素をクリックしてに追加すると、が既存のセットに追加されます。要素はないは、クラス名は、クリックされたとき

  • :ここに私のジレンマである
    要素がクリックされると、selectedは、クラス名に付加されimage-card asset-card selectable

  • image-card asset-card selectable selected

私の場合、のみと言う追加の要素を調べようとしています。image-card asset-card selectableとし、selectedは含まれていません。明示的にそれらを見つける方法がわかりません。

これにアプローチする方法について正規表現の解決法や他の考えがありますか?

答えて

2

特定のクラスを持たない要素を見つける最も簡単な方法は、:cssロケータを使用することです。

browser.divs(css: 'div.image-card.asset-card.selectable:not(.selected)') 

CSS-セレクタの説明:

  • div - これはあなたが
  • .image-card.asset-card.selectableに一致するようにしようとしている要素のタグ名である - これはあなたがしたいクラスのリストです一致する要素がある
  • :not(.selected) - これはあなたのクラスのリストです

CSSセレクタに反対の場合は、要素を反復処理できます。これは、ブラウザへの呼び出しを増やさなければならないため、処理が遅くなることに注意してください。 (my blog postを参照)、しかし、それはかなり厄介なる前に

selectable = browser.divs(class: 'image-card asset-card selectable') 
unselected = selectable.reject { |e| e.class_name.split(' ').include?('selected') } 

私は正規表現を使用しようとしました。私はそのように行くことを勧めませんでした。

+0

ありがとうございます!これは、トリックを行い、その後、画面上の他のカードを選択すると私の他の問題を解決しました! – kmancusi

関連する問題