如何使用Java选中Selenium WebDriver中的复选框?

如何使用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所具有的标准输入复选框元素,而是一个自定义元素。为了检查它,您可以对它执行单击

我使用Java中的Selenium来测试web应用程序中复选框的检查。这是我的密码:

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"});