首页 > 解决方案 > 尽管可用,但复选框的元素不可见

问题描述

我正在尝试使用 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

我在这里做错了什么?任何帮助将非常感激。

标签: javaseleniumselenium-webdrivercheckboxwebdriver

解决方案


据我在您的 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();

希望这会有所帮助!


推荐阅读