私の問題は、私のウェブページ上のチェックボックス要素を見つけることです。私は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
以下
これは非常に便利ですね。残念ながらまだ動作させることはできません(私はまだ要素のプロパティに到達できません)。しかし、私はこの道を確かめます。私もxpathを使いたくないのは、私のテストがどれほど壊れやすいかであるからです。キムありがとう! –
XPathで同じことを表現できます: 'driver.findElement(By.xpath(" // input [@ type = 'checkbox'] [@ data-privid = '13 '] "));'。ほとんど同じですが、さらに '/'と '@ '文字があります。特に複数のクラス属性を扱う場合、XPathはCSSセレクタと比較して#$&§で本当に苦しいことがあります。私は、XPathがCSSより優れていると考えることができる唯一のケースは、Seleniumのむしろ単純なCSS実装ではできない、HTMLタグ内のtextcontentを検索したいときです。 –