我无法使用Selenium WebDriver在下拉列表中选择复选框

时间:2018-07-24 16:58:30

标签: java selenium

看起来像这样 id(“ ctl05_cbMulti_DropDown”)/ div [@ class =“ rcbScroll rcbWidth”] / ul [@ class =“ rcbList”] / li [@ class =“ rcbHovered”] / label [1] / input [@ class =“ rcbCheckBox “]

这些都不起作用

驱动程序。 findElement(By.xpath(“(// input [@ type ='checkbox'])[2]”))。click(); 要么 driver.findElement(By.id(“ ctl05_ctl03_cblUser_Input”))。sendKeys(“ Smith,John”);

3 个答案:

答案 0 :(得分:0)

我在第一行代码中看到了一些错误。您不应在xpath中传递“(”。

正确的代码应为:

new WebDriverWait(driver, 30).until(ExpectedConditions.ElementToBeClickable (By.xpath("//input[@type='checkbox'][2]")));

driver. findElement(By.xpath("//input[@type='checkbox'][2]").click();

答案 1 :(得分:0)

根据您的后续评论,问题在于子选择器应为1,因为XPath子选择器基于零,并且不需要附加的括号。只需更改数字即可引用正确的复选框,例如:

如果要选择第一个复选框,请使用以下命令: 使用XPath:

driver.findElement(By.xpath("//input[@type='checkbox'][0]")).click();

获取复选框的另一种方法是使用CSS选择器:

driver.findElements(By.cssSelector("input[class='rcbCheckBox']")[0].click();

如果要选择第二个复选框: 使用XPath:

driver.findElement(By.xpath("//input[@type='checkbox'][1]")).click();

使用CSS:

driver.findElements(By.cssSelector("input[class='rcbCheckBox']")[1].click();

我对CSS更加熟悉,所以我的XPath语法并不完全正确。但是想法还是一样。

答案 2 :(得分:0)

http://simplejavautomation.blogspot.com/p/dropdown-checkbox.html中查看此示例

driver.findElement(By.xpath("//span[@class='hida']")).click();

WebElement mutliSelect = driver.findElement(By.xpath("//div[@class='mutliSelect']"));
mutliSelect.findElements(By.xpath(".//li")).forEach(li -> {
    li.findElement(By.xpath(".//input[@type='checkbox']")).click();
});