JavaでSeleniumを使用して、webappのチェックボックスのチェックをテストしています。コードは次のとおりです。
private boolean isChecked;
private WebElement e;
e
を宣言し、チェックボックスがある領域に割り当てます。
isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");
奇妙なのは、getAttribute("checked")
がnull
を返すため、NullPointerException
チェックボックスのHTMLには、checked
属性は表示されません。ただし、すべてのinput
要素にchecked = "true"
があるため、このコードは機能しますか?
Webdriverを使用している場合、探しているアイテムは選択されています。
多くの場合、チェックボックスのレンダリングでは、指定されない限り、チェックされた属性は実際には適用されません。
Selenium Webdriverで探すのはこれです
isChecked = e.findElement(By.tagName("input")).Selected;
WebDriver Java APIにはSelectedがないため、上記のコードは次のようになります。
isChecked = e.findElement(By.tagName("input")).isSelected();
if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
driver.findElement(By.id("idOfTheElement")).click();
}
if(checkBox.getAttribute("checked") != null) // if Checked
checkBox.click(); //to Uncheck it
and
ステートメントを追加して、checkedがtrueであるかどうかを確認することもできます。
私はcssSelectorでそれをします:
// for all checked checkboxes
driver.findElements(By.cssSelector("input:checked[type='checkbox']"));
// for all notchecked checkboxes
driver.findElements(By.cssSelector("input:not(:checked)[type='checkbox']"));
たぶんそれも役立ちます;-)
少数の選択/選択解除のみを行う複数のチェックボックスがあるイベントの場合、Chromeドライバーを使用した次の作業(IEドライバーでは何らかの理由で失敗しました) :
注:私のチェックボックスにはIDが関連付けられていませんでした。これは、ドキュメントに従ってそれらを識別するための最良の方法です。ステートメントの先頭にある!
記号に注意してください。
if(!driver.findElement(By.xpath("//input[@type='checkbox' and @name='<name>']")).isSelected())
{
driver.findElement(By.xpath("//input[@type='checkbox' and @name= '<name>']")).click();
}
Seleniumフレームワークのメカニズム:
ここで、Seleniumはサーバーにリクエストを行い、タグ名入力で最初のサブ要素を取得します
WebElement e = e.findElement(By.tagName("input"));
その要素の属性を受け取ろうとするより
object attribute = e.getAttribute("checked")
どちらかを使用します
findElement(By.attribute("checked")
または使用する
findElement(By.xpath("\\input[@checked='true']")
追伸JavaのSelenium APIに相当するものに慣れていないため、一部のメソッドの名前が若干異なる場合があります。
public boolean getcheckboxvalue(String element)
{
WebElement webElement=driver.findElement(By.xpath(element));
return webElement.isSelected();
}
想定してみましょう
private string isChecked;
private webElement e;
isChecked =e.findElement(By.tagName("input")).getAttribute("checked");
if(isChecked=="true")
{
}
else
{
}
この答えがあなたの助けになることを願っています。 CSharp Selenium Webドライバーに明確化があれば教えてください。