我使用Selenium打开一个页面。打开页面后,我想点击某种刷新按钮。当我点击它时,我得到了这个错误:
ElementNotVisibleError:元素不可见
这是我用来点击按钮的代码:
driver.findElement(By.id(id)).click();
我的猜测是,无论何时按下该按钮都不可见。也许它开始时也不可见。因为它没有进行整页刷新。
任何方式让selenium检查某些东西是否可见,并且可能要等到它?
编辑:
事实证明,有多个具有相同ID的按钮。而我想要触及的按钮也是如此。我试图找到By.xpath
的按钮,但我仍然无法找到它。我这样做的方法是按ID搜索按钮,就像这个//button[contains(@id, 'abc')][1]
一样。 (课程数量不同)。
Selenium无法找到该元素,但我可以通过Chrome开发者工具找到它。有什么建议吗?
答案 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);