java - 尽管可用,但复选框的元素不可见
问题描述
我正在尝试使用 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();
}
但是,如果您只想要 value=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 - AppCompatImageView 无法转换为 com.squareup.picasso.Target
- performance - 测试具有长时间运行查询且轮询状态的 http rest API
- web-component - “slotchange”事件不会在 iOS 11 上触发
- html - 为什么额外的垂直滚动条出现在 mat-tab-body-content 中,我需要使用 overflow-auto height 100%
- python - 如何在使用 pdfkit.from_string() 生成的 pdf 中添加换行符?
- java - 我如何模拟方法,从另一种方法调用一个方法?
- json - 需要通过 JSON Patch 在 JSON 中添加列表
- python - CSS Style 可以像 wxpython 框架那样实现 gui python 应用吗
- jquery - 如何使用jquery数据表对最后一项显示第一页最后一项的顺序进行排序?
- c - (PSET5 cs50)卸载链表数组时出现段错误