2016-09-15 12 views
0

私はクリック可能と識別していますWebElementによってCssSelector。私が使用していますサンプルコードは次のとおりです。セレン:CssSelectorでWebElementのステータスを確認

String selectorString = "a.some-text.item"; 

WebElement we = driver.findElement(By.cssSelector(selectorString)); 
we.click(); 

問題は項目の後にa.some-text.item.clickedにそのCssSelector変更をクリックされたこと、です。私はまだ上記のselectorString変数を使って確実に識別することができます。しかし、前にクリックされていない場合にのみクリックします。

アイテムのステータス(cssSelectorの名前がa.some-text.itemまたはa.some-text.item.clickedのいずれであるか)を確認するにはどうすればよいですか?

答えて

1

これまでにクリックされていない場合にのみクリックします。

のみunclicked要素を決定するためにcssSelector:not(selector)機能を使用してみてください: -

String selectorString = "a.some-text.item:not(.clicked)"; 

WebElement we = driver.findElement(By.cssSelector(selectorString)); 
we.click(); 

編集: - あなただけの要素がとして試行しクリックした後clickedクラスかどうかが含まれているかどうかを確認したい場合 -

String selectorString = "a.some-text.item"; 
driver.findElement(By.cssSelector(selectorString)).click(); 

//Now verify element clicked or not 
WebElement we = driver.findElement(By.cssSelector(selectorString)); 
String msg = (we.getAttribute("class").contains("clicked")) ? "element clicked" : "element not clicked"; 
System.out.println(msg); 
+0

これは私にタイムアウトを与えます。ウェブサイト上で 'a.some-text.item.clicked'に変更された後でも、' a.some-text.item'で要素を見つけることができます。要素がマッチした後、私はそれを '.clicked'拡張とマッチさせたのか、マッチしなかったのかを判断したいと思います。理想的には、タイムアウトを待つ必要はありません。 – nautical

+0

@nautical実際には、要素がクリックされたかどうかを判断したいと思うかどうかはわかりませんが、私の理解で私の答えを理解して編集しようとしています。ありがとう.. :) –

+0

@nauticalまた、タイムアウト例外を避けるために、未クローズの要素のみを取得したい場合は、 ':not(selector)'関数を使って前の応答のcssSelectorで 'findElements'を使うことができます。クリックされていない要素が見つかった場合は、要素がクリックされました。 –

関連する問題