2016-03-31 3 views
2

私の問題は、私のウェブページ上のチェックボックス要素を見つけることです。私はEclipse、TestNG、Javaを選択言語としてSelenium webdriverを使用しています。チェックボックス要素を点検このWeb要素はSelenium Webdriverでどのように見つけられますか?

は私に次のようになります:

<input type="checkbox" data-privid="13" data-priviligeeid="406"> 

私は、文字列がChromeブラウザの要素からコピーされたXPathで次のXPathコードを、使用してみました。

WebElement ChangeButton = driver.findElement(By.xpath("[@id=\"privs\"]/div[1]/div[2]/label/input")); 

このようにすると、ChangeButtonは空のままになります。これはどちらか動作しませんでした

ArrayList<WebElement> inputs =(ArrayList<WebElement>)driver.findElements(By.tagName("input"));  

     if(inputs != null) { 

      for(WebElement checkbox : inputs) { 
       String attribute = checkbox.getAttribute("data-privid"); 
       System.out.println(attribute); 

       .... 
} 
} 

属性は任意の値を取得したことがないよう、:

はまた、私はspecifikデータ-PRIVID値を見つけるまで、配列をループしようとしました。

どのように私はこれを解決することができますか?

編集:これが解決されました!

最初に私のソリューションがうまくいかなかったのは、あるクラスに属するメソッドのナビゲーションと、2番目のクラスで取得していたWeb要素のナビゲーションだったからです。私はxmlファイルでそれらを組み合わせようとしましたが、何らかの理由で、ロケータクラスがそのことをやろうとしたときに私は間違ってurlになりました。回答をいただきありがとうございます。私はcssロケータと一緒に行き、それは美しく動作します。

//input[@type='checkbox' and @data-privid='13'] 

のXPath

以下

答えて

0

必要はXPathを使用します。 CSSセレクタはより便利です。あなたのxpaht式"[@id=\"privs\"]/div[1]/div[2]/label/input"が有効ではありません

driver.findElement(By.cssSelector("input[type='checkbox'][data-privid='13']")); 
+0

これは非常に便利ですね。残念ながらまだ動作させることはできません(私はまだ要素のプロパティに到達できません)。しかし、私はこの道を確かめます。私もxpathを使いたくないのは、私のテストがどれほど壊れやすいかであるからです。キムありがとう! –

+0

XPathで同じことを表現できます: 'driver.findElement(By.xpath(" // input [@ type = 'checkbox'] [@ data-privid = '13 '] "));'。ほとんど同じですが、さらに '/'と '@ '文字があります。特に複数のクラス属性を扱う場合、XPathはCSSセレクタと比較して#$&§で本当に苦しいことがあります。私は、XPathがCSSより優れていると考えることができる唯一のケースは、Seleniumのむしろ単純なCSS実装ではできない、HTMLタグ内のtextcontentを検索したいときです。 –

0

てみ、それはあなたを助けることを願っています:)

+0

私はまだそれを働かせることができませんが、あなたの答えは金のことを思い出させるので、とにかく私に助けを与えてくれます。ありがとうございました! –

0

:これを試してみてください。
あなたはこれは次のようになりid="privs"での最初のステップの要素を見つけることを試みるようだ:次に、あなたのXPathはこのように見えるかもしれ"div[@id='privs']"

"*[@id='privs']"または(より良いこの要素がdiv要素である場合):

"div[@id='privs']/div[1]/div[2]/label/input"

+0

ああ、多くのありがとう!はい、私はそれがそこに引用符を詰め込もうとすると変だと思った。あなたのxpathコードを試しましたが、残念ながらまだ動作しません。私は何かが欠けているはずだと思っています。おそらく、ページに達してから要素を探す前に、しばらくの間テストを一時停止する必要がありますか?私は自動化されたテストライティングには全く新しいです。私はおそらく、脆弱性のためにxpathを使用することを避けたいと思っていましたが、必要なときには動作させるのが良いでしょう。 :) –

関連する問題