【问题标题】:Robot Framework - Selenium2Library - IE11 is very unstable to complete testsRobot Framework - Selenium2Library - IE11 非常不稳定,无法完成测试
【发布时间】:2017-04-05 23:10:03
【问题描述】:

基本上,如果测试用例在 Chrome、FF 或 Edge 上运行,它们会毫无问题地通过 - 您甚至可以在测试后使用浏览器。

然而,对于 IE,从 Web 驱动程序运行它基本上会使浏览器不稳定。这适用于框架和手动使用。我遇到的问题是某些元素在被选中时会闪烁。不幸的是,我试图在下拉表中选择一个元素。一旦它开始闪烁,然后执行 Click 元素,它就会在下拉菜单后面单击,因此不小心单击了一个完全不同的元素并停止了我的测试。

有没有办法解决这个问题?我需要在所有 4 个浏览器上自动化我们的测试。

【问题讨论】:

  • 放弃 IE 进行自动化测试是恕我直言的最佳选择。让 IE 自动化的努力根本不值得,因为 IE 在后台工作方式不同,而且 IEDriver 非常不稳定......
  • 我真的无能为力吗?过去一天一直在用它来抨击......
  • 您说您的代码适用于 3 种主要浏览器,但对于 IE 却失败了。你真的想在你的代码中为 IE 添加丑陋的补丁,这会损害你的其余测试吗?我建议重新考虑 IE 自动化测试的 ROI,或者使用其他工具:stackoverflow.com/questions/3841371/…
  • 你说得对,投资回报率不值得。我已经打破了一个测试用例,试图让它与 IE 一起用于其他浏览器。我认为在完成其他测试后,我只需要为 IE 使用单独的工具。谢谢Moshisho!

标签: selenium testing selenium-webdriver automated-tests robotframework


【解决方案1】:

恕我直言,InternetExplorerDriver 不够稳定,不值得自动化测试的投资回报率,尤其是在 3 个主要浏览器使用您的代码的情况下,并且 IE 需要丑陋的补丁,这可能会损害其余测试。引用InternetExplorerDriver:

缺点

  • 显然 InternetExplorerDriver 只能在 Windows 上运行!
  • 比较慢(我的补充 - 请参阅 Dave Haeffner 的 great benchmark

特殊配置:

在 IE 7 或更高版本的 Windows Vista 或 Windows 7 上,您必须将每个区域的保护模式设置设置为相同的值。 ...此外,IE 10 及更高版本必须禁用“增强保护模式”...仅适用于 IE 11,您需要设置注册表项。 .

Javascript 事件是如何实现的:

由于 InternetExplorerDriver 仅适用于 Windows,它会尝试使用所谓的“本机”或操作系统级别的事件在浏览器中执行鼠标和键盘操作。这与使用模拟的 JavaScript 事件进行相同的操作形成对比。 ... 但是,当 IE 浏览器窗口没有焦点以及尝试将鼠标悬停在元素上时,鼠标事件目前存在一些问题

名单还在继续……

【讨论】:

  • 我不能凭良心支持这个答案。将实施适当的同步方法或等待 DOM 自动进入已知状态的特征描述为“有害...测试”的“丑陋补丁”既具有误导性又不负责任。
  • 这不是我说的......这不是问题所在......问题在于IE上测试的稳定性,在其他浏览器上它正在工作,所以我猜实现不是问题。此外,请参阅报价(不是我的意见...)和基准...
  • 这与等待或任何其他不良做法无关。我只是想绕过性能不佳的 IE Web 驱动程序——我不需要让 IE 运行特殊的小测试,而其他的则不需要。
【解决方案2】:

您是否尝试过将requireWindowFocus 功能与IE 一起使用?驱动程序的行为有完全有效的技术原因。我鼓励任何对为什么感兴趣的人阅读 a blog post 专门讨论这个问题。

【讨论】:

    【解决方案3】:

    它可能适合你,也可能不适合你;但还是看看-

    1. 将您的应用程序 URL 添加为可信站点。
    2. 确保所有 4 个区域(Int​​ernet、本地 Intranet、受信任站点和受限制站点)的“启用保护模式”处于打开或关闭状态。
    3. 关闭弹出窗口拦截器。
    4. 关闭 SmartScreen 过滤器。

    【讨论】:

    • 是否按照您的建议进行了更改。没有改变任何东西。
    【解决方案4】:

    因此,当我尝试在 IE11 中使用 Robot 自动执行测试时,我遇到了相同/类似的问题。就我而言,一旦元素开始闪烁,测试甚至不会继续进行。浏览器只是挂起,没有任何交互。 我发现的解决方法是使用 “Press Key” 关键字而不是“Click Element” 并给出回车键。这对我来说很好,我能够完成我的测试。当然,我必须添加两个两个测试用例,一个用于 IE,一个用于其他浏览器,但它确实有效!!

    下面是示例测试用例:

    Click Add - IE                
        # Click Element    ${I_Add}    --> This is for the other browsers
        Focus    ${I_Add}              -->
        Press Key    ${I_Add}    \\13  --> These are for IE
    

    如果你有任何进一步的澄清,请尽管问我

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 2015-10-09
      • 2017-11-14
      • 2015-12-06
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2014-12-09
      • 2018-12-14
      相关资源
      最近更新 更多