【发布时间】:2016-02-07 09:43:58
【问题描述】:
我不知道为什么 80% 的时间测试工作良好,有时我得到一个错误,即元素不可见,尽管我使用 wait.until....
这很奇怪,有人知道吗?
【问题讨论】:
标签: selenium selenium-webdriver selenium-chromedriver selenium-firefoxdriver
我不知道为什么 80% 的时间测试工作良好,有时我得到一个错误,即元素不可见,尽管我使用 wait.until....
这很奇怪,有人知道吗?
【问题讨论】:
标签: selenium selenium-webdriver selenium-chromedriver selenium-firefoxdriver
这是任何 ui 自动化工程师的噩梦..
诀窍在于如何有效地使用等待。
尝试使用显式等待并在其中使用等待元素可见选项..
还可以尝试使用 JAVASCRIPT/jQuery click..即使您的元素不可见,这也会起作用..但是该元素应该存在..
【讨论】:
这种可变性正是您希望在测试中避免的,以使它们具有可信度。
这一点也不奇怪,一方面只是测试网站的服务器和客户端浏览器之间的race condition 的经典示例,另一方面是一个非常快速的自动化测试程序,它有预期但运行速度要快得多比人类所能做到的。每个人都曾在某个时候看到过。
Here's a good set of examples 帮助您在 Selenium 代码中引入等待没有可以massively slow down您的测试的不必要的延迟。
【讨论】:
只是给出一个想法:有时使用不同的方法会有所帮助,这意味着测试不会 100% 像用户那样做。
只是刷新(甚至是第二次)页面并等待所有必需的元素都已加载有时对我有帮助。
如果软件刚刚部署,网络服务器需要重新组织并需要更长的时间来响应,因此您可能会增加 Selenium 的超时时间。
另一个问题,例如使用浮动菜单时的导航可以通过直接导航到 URL 来解决,这并不常见,但任何用户都可能这样做。
在当前窗口上恢复焦点有时对我有帮助:
Browser.WebDriver.SwitchTo().Window(Browser.WebDriver.CurrentWindowHandle);
【讨论】: