【问题标题】:Not stable element visibility using selenium使用硒不稳定的元素可见性
【发布时间】:2016-02-07 09:43:58
【问题描述】:

我不知道为什么 80% 的时间测试工作良好,有时我得到一个错误,即元素不可见,尽管我使用 wait.until....

这很奇怪,有人知道吗?

【问题讨论】:

    标签: selenium selenium-webdriver selenium-chromedriver selenium-firefoxdriver


    【解决方案1】:

    这是任何 ui 自动化工程师的噩梦..

    诀窍在于如何有效地使用等待。

    尝试使用显式等待并在其中使用等待元素可见选项..

    还可以尝试使用 JAVASCRIPT/jQuery click..即使您的元素不可见,这也会起作用..但是该元素应该存在..

    【讨论】:

      【解决方案2】:

      这种可变性正是您希望在测试中避免的,以使它们具有可信度。

      这一点也不奇怪,一方面只是测试网站的服务器和客户端浏览器之间的race condition 的经典示例,另一方面是一个非常快速的自动化测试程序,它有预期但运行速度要快得多比人类所能做到的。每个人都曾在某个时候看到过。

      Here's a good set of examples 帮助您在 Selenium 代码中引入等待没有可以massively slow down您的测试的不必要的延迟。

      【讨论】:

        【解决方案3】:

        只是给出一个想法:有时使用不同的方法会有所帮助,这意味着测试不会 100% 像用户那样做。

        只是刷新(甚至是第二次)页面并等待所有必需的元素都已加载有时对我有帮助。

        如果软件刚刚部署,网络服务器需要重新组织并需要更长的时间来响应,因此您可能会增加 Selenium 的超时时间

        另一个问题,例如使用浮动菜单时的导航可以通过直接导航到 URL 来解决,这并不常见,但任何用户都可能这样做。

        在当前窗口上恢复焦点有时对我有帮助:

        Browser.WebDriver.SwitchTo().Window(Browser.WebDriver.CurrentWindowHandle);
        

        【讨论】:

        • 告诉自动化测试人员一直刷新页面直到它“工作”是非常糟糕的建议。要么软件坏了,要么测试有误,作为测试人员,这就是大赢与大失败的区别。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        • 2019-12-25
        相关资源
        最近更新 更多