如何使用Java选中Selenium WebDriver中的复选框?
我使用Java中的Selenium来测试web应用程序中复选框的检查。这是我的密码:如何使用Java选中Selenium WebDriver中的复选框?,java,selenium,checkbox,selenium-webdriver,Java,Selenium,Checkbox,Selenium Webdriver,我使用Java中的Selenium来测试web应用程序中复选框的检查。这是我的密码: boolean isChecked = driver.findElement((By.xpath(xpath1))).isSelected(); 但此代码返回的值不正确。HTML中的复选框: 活动复选框 非活动复选框 如何在使用Java的Selenium WebDriver中解决这个问题?这个问题主要是因为您创建的复选框不是HTML所具有的标准输入复选框元素,而是一个自定义元素。为了检查它,您可以对它执行单击
boolean isChecked = driver.findElement((By.xpath(xpath1))).isSelected();
但此代码返回的值不正确。HTML中的复选框:
活动复选框
非活动复选框
如何在使用Java的Selenium WebDriver中解决这个问题?这个问题主要是因为您创建的复选框不是HTML所具有的标准输入复选框元素,而是一个自定义元素。为了检查它,您可以对它执行单击操作并查看它是否工作
driver.findElement(By.cssSelector('div.ui-chkbox-box)).click(); // Check the checkbox
为了验证是否已选中,您可以验证元素的类,该类在div元素处于活动状态时将ui state active添加到div元素
这是怎么做的-
try{
driver.findElement(By.cssSelector('div.ui-state-active')); // Find the element using the class name to see if it exists
}
catch(NoSuchElementException e){
System.out.println('Element is not checked');
}
或者获取元素的class属性,然后使用它查看它是否存在
driver.findElement(By.cssSelector('div.ui-chkbox-box')).getAttribute('class');
不能使用isSelected,因为它不是标准的HTML输入元素 我建议的解决方案是:您可以使用class属性并使用活动属性进行检查:
if(driver.findElement((By.xpath(xpath1))).getAttribute('class') == 'ui-chkbox-box ui-widget ui-corner-all ui-state-default ui-state-active')
return True
else
return False
我设法解决了这个问题,但这不是一个很好的解决方案:
String a = driver.findElement((By.xpath(xpath1))).getAttribute("class");
System.out.print(a.contains("ui-state-active"));
对于更棘手的情况: 复选框有一个伪CSS选择器,选中 因此,您可以将“选中”添加到CSS选择器中,如下所示:
let check = !!driver.findElement({css:"div.ui-chkbox-box:checked"});
页面上有10多个相同属性的复选框。有什么问题吗?
String a = driver.findElement((By.xpath(xpath1))).getAttribute("class");
System.out.print(a.contains("ui-state-active"));
let check = !!driver.findElement({css:"div.ui-chkbox-box:checked"});