web-dev-qa-db-ja.com

Seleniumチェックボックス属性「checked」

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"があるため、このコードは機能しますか?

65
jamesfzhang

Webdriverを使用している場合、探しているアイテムは選択されています。

多くの場合、チェックボックスのレンダリングでは、指定されない限り、チェックされた属性は実際には適用されません。

Selenium Webdriverで探すのはこれです

isChecked = e.findElement(By.tagName("input")).Selected;

WebDriver Java AP​​IにはSelectedがないため、上記のコードは次のようになります。

isChecked = e.findElement(By.tagName("input")).isSelected();
111
CBRRacer
if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
     driver.findElement(By.id("idOfTheElement")).click();
}
12
ShutterSoul
 if(checkBox.getAttribute("checked") != null) // if Checked 
    checkBox.click();                         //to Uncheck it 

andステートメントを追加して、checkedがtrueであるかどうかを確認することもできます。

7
Aditya

私は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']"));

たぶんそれも役立ちます;-)

6
Tarken

少数の選択/選択解除のみを行う複数のチェックボックスがあるイベントの場合、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();
}
1
user2196798

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に相当するものに慣れていないため、一部のメソッドの名前が若干異なる場合があります。

0
VMykyt
public boolean getcheckboxvalue(String element)
    {   
        WebElement webElement=driver.findElement(By.xpath(element));
        return webElement.isSelected();
    }
0
akhilesh gulati
  1. 変数を宣言します。
  2. ラジオボタンのチェック済みプロパティを保存します。
  3. If条件があります。

想定してみましょう

private string isChecked; 
private webElement e; 
isChecked =e.findElement(By.tagName("input")).getAttribute("checked");
if(isChecked=="true")
{

}
else 
{

}

この答えがあなたの助けになることを願っています。 CSharp Selenium Webドライバーに明確化があれば教えてください。

0
Balaji