JavaScript - Selenium Webdriver。如何检查元素是否可见

时间:2016-11-06 13:03:11

标签: javascript selenium xpath

我使用Selenium打开一个页面。打开页面后,我想点击某种刷新按钮。当我点击它时,我得到了这个错误:

  

ElementNotVisibleError:元素不可见

这是我用来点击按钮的代码:

driver.findElement(By.id(id)).click();

我的猜测是,无论何时按下该按钮都不可见。也许它开始时也不可见。因为它没有进行整页刷新。

任何方式让selenium检查某些东西是否可见,并且可能要等到它?

编辑: 事实证明,有多个具有相同ID的按钮。而我想要触及的按钮也是如此。我试图找到By.xpath的按钮,但我仍然无法找到它。我这样做的方法是按ID搜索按钮,就像这个//button[contains(@id, 'abc')][1]一样。 (课程数量不同)。

Selenium无法找到该元素,但我可以通过Chrome开发者工具找到它。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

在您的情况下,您可以使用显式等待来检查元素/按钮何时可单击。 试试这个 wait.until(ExpectedConditions.visibilityOfElementLocated(id))

答案 1 :(得分:0)

解决方案:1 您可以尝试在syso中使用此代码,

System.out.println("getting Page Source "+driver.getPageSource());

此方法将返回整个页面Source,您可以检查您的按钮是否存在于源中。您可以将上述代码放在函数中的多个点上,然后检查直到找到源中的按钮。

解决方案:2 如果您的按钮在源中不存在,则必须检查该按钮是否已加载到iframe中,如果是,您可以使用以下代码并切换到iframe,然后尝试找到按钮,

driver.switchTo.frame(frameName);