我正在尝试使用 Selenium 勾选复选框。该页面如下所示。
然后当我点击编辑时,它会变成下面显示的格式。
此时,我可以使用下面显示的 xpath 从 Chrome 开发工具中选择复选框。
//input[@name='value[326071]']
下面是 DOM 的样子。
在单击复选框之前,我已经让一个线程等待。下面是我的代码。
Thread.sleep(5000);
WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]']"));
assignWorkSpaceElement.click();
我也尝试使用下面的 xpath。仍然没有运气。我正在通过 IntelliJ 调试代码,在浏览 web 元素行之前,我可以从 Chrome 开发工具中选择复选框。它显然在那里。
//*[contains(@class,'col-md-8')]//input[@name='value[326071]']
但是当我执行代码时,出现以下异常。
org.openqa.selenium.ElementNotVisibleException: element not visible
(Session info: chrome=70.0.3538.110)
(Driver info: chromedriver=2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363),platform=Mac OS X 10.13.6 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
我在这里做错了什么?任何帮助将不胜感激。
最佳答案
据我在您的 HTML 中所见,您定位的 XPath 看起来有多个元素...
现在,如果您尝试遍历所有复选框并单击,可以通过以下方式完成:
WebElement assignWorkSpaceElement = chromeDriver.findElements(By.xpath("//input[@name='value[326071]']"));
for (WebElement el : assignWorkSpaceElement ) {
el.click();
}
但如果您只想要一个值为 326071 的元素,则必须添加一些更具体的 XPath,例如:
WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]' and @type='checkbox' ]"));
assignWorkSpaceElement.click();
或者:
WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]' and @value='1' ]"));
assignWorkSpaceElement.click();
希望对您有所帮助!
关于java - 尽管可用,但元素对于复选框不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53467111/