无法点击复选框取消选中它似乎隐藏了

时间:2015-09-03 22:49:52

标签: java selenium selenium-webdriver

默认情况下选中该复选框,无法单击该复选框以取消选中。这是我的代码,但它返回错误说元素当前不可见,因此可能无法与之交互。 org.openqa.selenium.ElementNotVisibleException。

String checkboxXPath =("//input[contains(@type='checkbox',@name='key_IT_CONFIG.ios.restriction.functionality.enable.camera_checkboxVal')]");
                        WebElement elementToClick = driver.findElement(By.xpath(checkboxXPath));
                        elementToClick.click();

网站代码

<input type="checkbox" class="uwp_inputCheckBox" 
    name="key_IT_CONFIG.ios.restriction.functionality.enable.camera_checkboxVal" 
    id="key_IT_CONFIG.ios.restriction.functionality.enable.camera" 
    value="true" dir="ltr" hierarchy="false" expand="true" 
    checkedval="true" uncheckedval="false" 
    onclick="checkboxChange('IT_CONFIG.ios.restriction.functionality.enable.camera')" 
    checked="checked">

整个代码

whole code http://imageshack.com/a/img661/1720/SIi6Xj.png

3 个答案:

答案 0 :(得分:3)

我认为你应该使用显式等待直到元素可见。请在此处查看更新代码并使用它:

String checkboxXPath =("//input[contains(@type='checkbox',@name='key_IT_CONFIG.ios.restriction.functionality.enable.camera_checkboxVal')]");

WebDriverWait wait = new WebDriverWait(driver,30);

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(checkboxXPath)));

WebElement elementToClick = driver.findElement(By.xpath(checkboxXPath));
elementToClick.click();

答案 1 :(得分:0)

我有几点建议。当您在要单击的元素上有ID时,我不确定为什么XPath会如此复杂。试试这个......

driver.findElement(By.id("key_IT_CONFIG.ios.restriction.functionality.enable.camera"));

我有点猜测那是行不通的。查看HTML,我看到要点击的元素正上方的SPAN,它上面有onclick。我猜测,如果你点击它,它可能会触发复选框的点击...所以让我们试试......

driver.findElement(By.cssSelector("span.uwp_checkBoxSpan.uwp_checkBoxChecked"));

你可能需要在类名上检查我的拼写...我无法复制/粘贴,因为它是一张图片。

答案 2 :(得分:0)

由于Selenium适用于Javascript,我建议您通过输入Javvascript手动测试复选框点击事件。以下是您需要遵循的步骤:

  1. 手动执行测试用例直到脚本失败。
  2. 转到浏览器开发者工具选项 - &gt;控制台。输入javascript
    命令document.getElementById('key_IT_CONFIG.ios.restriction.functionality.enable.camera')。click()
  3. 如果这样可行,那么您的代码就没有理由不起作用。