【问题标题】:JavaScript - Selenium Webdriver. How to check if element is visibleJavaScript - Selenium Webdriver。如何检查元素是否可见
【发布时间】:2016-11-06 13:03:11
【问题描述】:

我正在使用 Selenium 打开一个页面。打开页面后,我想单击某种刷新按钮。当我单击它时,我收到此错误:

ElementNotVisibleError: 元素不可见

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

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

我的猜测是按钮在被按下时不可见。那也许它开始时也不可见。因为它没有进行整页刷新。

selenium 有什么方法可以检查某些东西是否可见,或者等到它可见?

编辑: 事实证明,有多个按钮具有相同的 ID。我试图达到的按钮已经下降了。我试图找到带有By.xpath 的按钮,但还是找不到。我这样做的方式是按 id 搜索按钮,例如 //button[contains(@id, 'abc')][1]。 (当然数量不同)。

Selenium 无法找到该元素,但我可以使用 Chrome 开发人员工具找到它。有什么建议吗?

【问题讨论】:

  • 如果您尝试了所有方法后仍然失败。请注意。有时您的浏览器启动得太小,按钮是可见的,但它在窗口的可见区域之外。所以web驱动不能点击它。
  • 我试过这个,但在找到元素后我仍然得到它不可见的错误。 driver.wait(until.elementLocated(By.id(id)), 3000, '\nCannot find element by id: ' + _id);driver.findElement(By.id(id)).click();
  • 在加载页面之前尝试最大化窗口
  • 感谢您的建议。我尝试在启动驱动程序后立即使用以下命令最大化窗口:driver.manage().window().maximize();。它甚至在我打开页面之前,所以它在按钮可见之前点击了几下。但我仍然遇到同样的错误。还有其他建议吗?
  • 你能提供你的html页面吗?

标签: javascript selenium xpath


【解决方案1】:

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

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

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

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

driver.switchTo.frame(frameName);

【讨论】:

  • 谢谢,今天晚些时候我会试试你的解决方案。我使用 JavaScript,而不是 Java。我对 JS 真的很陌生。你也知道在JS里怎么做吗?
  • 您正在用 javascript 编写 Selenium 代码?如果这样您可以使用警报代替,或者您可以在 F12 中调试并检查。
  • 使用alert: alert("获取页面源"+driver.getPageSource());使用 F12:
  • 你知道F12怎么用吗?在IE和谷歌浏览器中F12都可以用。
  • 好的,我会尝试读出整个源代码,看看是否能找到那里的按钮。是的,我知道如何使用 F12。我正在使用 Chrome。奇怪的是,我使用完全相同的代码在 Chrome 开发人员工具中使用 xpath 查找按钮,就像 Selenium 用来查找按钮一样。我可以找到按钮。硒不能。
【解决方案2】:

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

【讨论】:

  • 谢谢,但我已经有一个等待功能,等待驱动程序找到元素。 driver.wait(until.elementLocated(By.id(id)), 3000, '\nCannot find element by id: ' + id);
猜你喜欢
  • 2012-06-11
  • 2011-02-08
  • 2012-07-08
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
相关资源
最近更新 更多