java - 尽管可用,但元素对于复选框不可见

标签 java selenium selenium-webdriver checkbox webdriver

我正在尝试使用 Selenium 勾选复选框。该页面如下所示。

enter image description here

然后当我点击编辑时,它会变成下面显示的格式。

enter image description here

此时,我可以使用下面显示的 xpath 从 Chrome 开发工具中选择复选框。

//input[@name='value[326071]']

下面是 DOM 的样子。

enter image description here

在单击复选框之前,我已经让一个线程等待。下面是我的代码。

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/

相关文章:

java - 如何在java中返回 boolean 值(原始值)?

c# - YouTube刮板C# Selenium

java - 我有一个 Selenium 脚本和 GUI。如果我的团队尚未下载 Selenium,我如何与他们分享

java - 是否可以使用 Selenium Java 从 href 标签获取书籍作者姓名值?

python - 出现错误 :name 'webdriver' is not defined for appium

java - pageLoadTimeout 不适用于带有 PageObjects 的 Firefox

java - 如何将变量从构造函数传递到方法?

java - 如何发布我自己的类型化 WSDL?

java - 我如何在 Android 的 onResponse 之外使用变量?

java - 从 xls 读取数据,使 xls 文件在 selenium 中损坏