复选框已选中,但无法使用selenium点击它

时间:2017-02-06 13:36:15

标签: selenium-webdriver

单击复选框后,复选框将突出显示,但未单击该复选框 而且我没有例外。

<input name="include_notice" onclick="javascript:TogglePublishDates();" type="checkbox">

Picture of highlighted checkbox

我使用“姓名”识别此复选框,并尝试使用sendkeysReturnsendKeysEnter

注意:此测试用例运行良好很长时间。在Selenium Web驱动程序或Firefox中没有进行任何更改。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用java脚本单击,如下所示:

JavascriptExecutor e = (JavascriptExecutor)wd;
e.executeScript("arguments[0].click();", driver.findElement(By.name("include_notice")));

如果您仍然观察到不一致的行为,您可能希望实现重试机制,如下所示:

    //1) Finding the check box
    WebElement checkBox = driver.findElement(By.name("include_notice"));
    //2) Checking whether check box is already checked
    if (!checkBox.isSelected()) {
        JavascriptExecutor e = (JavascriptExecutor)wd;
        e.executeScript("arguments[0].click();", checkBox);
        //3) Checking whether first attempt to check the check box worked
        if (!checkBox.isSelected()) {
            //4) Retrying
            checkBox.click();
        }
    }

如果您有任何疑问,请与我们联系。

答案 1 :(得分:1)

您可以尝试使用以下代码:

driver.findElement(By.name("include_notice")).click();  //find checkbox element and click on it.

使用java-script executor单击复选框。

WebElement checkbox = driver.findElement(By.name("include_notice"));
((JavascriptExecutor) driver).executeScript("arguments[0].click();", checkbox);

如果已选中Checkbox,请使用此代码。

 WebElement checkbox =  driver.findElement(By.name("include_notice"));
 if (!checkBox.isSelected())        //checkbox is not selected then only it will select the checkbox.
 {
     checkBox.click();
     System.out.println(checkbox.isSelected());
 }