Seleniumcheckbox属性“checked”
我正在使用Java中的Selenium来testingwebapp中checkbox的检查。 代码如下:
private boolean isChecked; private WebElement e;
我声明e
并将其分配到checkbox所在的区域。
isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");
奇怪的是, getAttribute("checked")
返回null
,因此是NullPointerException
在checkbox的HTML中,没有显示checked
属性。 但是,是不是所有的input
元素都有一个checked = "true"
所以这个代码应该工作?
如果您正在使用Webdriver,那么您正在查找的项目被选中。
通常情况下,在checkbox的呈现中,除非指定,否则实际上并不应用选中的属性。
所以你在Selenium Webdriver中寻找的是这样的
isChecked = e.findElement(By.tagName("input")).Selected;
由于在WebDriver Java API中没有select,所以上面的代码应该如下所示:
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
语句,以确保如果选中是正确的。
我会用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']"));
也许这也有帮助;-)
对于需要select/取消select多个checkbox的事件,使用Chrome驱动程序进行以下工作(IE驱动程序以某种方式失败):
注:我的checkbox没有与他们关联的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向服务器发出请求并获取带有标记名input的第一个子元素
WebElement e = e.findElement(By.tagName("input"));
比你尝试接收该元素的属性
object attribute = e.getAttribute("checked")
所以要么使用
findElement(By.attribute("checked")
或使用
findElement(By.xpath("\\input[@checked='true']")
PS我不熟悉java的相当于seleniumapi所以一些方法可能会被命名稍有不同。
- 声明一个variables。
- 存储单选button的选中属性。
- 有条件。
让我们假设
private string isChecked; private webElement e; isChecked =e.findElement(By.tagName("input")).getAttribute("checked"); if(isChecked=="true") { } else { }
希望这个答案对你有帮助。 让我知道,如果有任何澄清在CSharp Seleniumnetworking驱动程序。
public boolean getcheckboxvalue(String element) { WebElement webElement=driver.findElement(By.xpath(element)); return webElement.isSelected(); }