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

时间:2018-11-25 11:47:33

标签: java selenium selenium-webdriver checkbox webdriver

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

enter image description here

然后,当我单击“编辑”时,它将更改为以下显示的格式。

enter image description here

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

changelog-topic

下面是DOM的外观。

enter image description here

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

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

我也尝试了下面的xpath。仍然没有运气。我正在通过IntelliJ调试代码,在遍历Web元素行之前,我可以从Chrome开发者工具中选中该复选框。显然在那里。

Thread.sleep(5000);
WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]']"));
assignWorkSpaceElement.click();

但是当我执行代码时,出现以下异常。

//*[contains(@class,'col-md-8')]//input[@name='value[326071]']

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

2 个答案:

答案 0 :(得分:1)

据我在您的HTML中所看到的,看起来您要查找的XPath具有多个元素...

现在,如果您要遍历所有复选框并单击,可以使用以下方法完成:

excelApp.Cursor = XlMousePointer.xlWait;

但是,如果您只想要一个值= 326071的元素,则必须添加一些更特定的XPath,例如:

WebElement assignWorkSpaceElement = chromeDriver.findElements(By.xpath("//input[@name='value[326071]']"));
for (WebElement el : assignWorkSpaceElement ) {
     el.click();
}

或者:

WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]' and @type='checkbox' ]"));
assignWorkSpaceElement.click();

希望这对您有所帮助!

答案 1 :(得分:1)

我认为您需要更改xpath,不要使用 thread.sleep ,而不要使用 webdriver wait。

WebDriverWait wait = new WebDriverWait(driver, 5);
  WebElement e4 = wait.until(ExpectedConditions.visibilityOf(By.xpath("//div[@class='col-md-8- form-control-static']//following::input[1]")));

if(e4.isDisplayed())
{
  e4.click();
}