如果其他应用程序打开,为什么运行 WebDriver 脚本的 IE9 会失去焦点?

软件测试 网络驱动程序 即9
2022-01-22 23:39:51

我在 Windows 7 64 位的 IE9 上运行了自动化测试。被测应用程序是一个简单的网络表单,每个页面上都有一个“下一步”按钮。当我在 Firefox 12 上运行自动化测试时,它们在后台运行,而我可以继续在不同的浏览器中处理其他内容。

但是,当我从 IE9 启动测试套件并让它在后台运行时,测试卡在“下一步”按钮上。Webdriver 似乎找到并单击它,但没有导航到下一页。显然,由于 TimeoutExceptions,有很多失败的测试。

为了避免这些错误,我在晚上运行了我的测试套件,没有运行其他应用程序并更改了我的 PC 的电源设置,因此它没有关闭或进入睡眠模式等。但是我仍然看到很多 TimeoutExceptions。(在 Firefox12 中没有发生)

是否需要设置 IE 9 来更改此行为?有没有人有类似的经历?

谢谢!

编辑:这是我在 Webdriver 邮件列表上从 Jim Evans 收到的回复。

这是 IE 驱动程序的一个众所周知且有据可查的问题,因为它目前的架构 [1]。做出架构决策的原因以及它们在 IE 中成为挑战的原因也已被详细讨论过[2]。我们正在努力在 IE 驱动程序[3] 中实现合成事件,它们有自己的一系列问题,尽管它们会解决这个特定的问题,但它们还没有完全准备好使用。

——吉姆

[1] http://code.google.com/p/selenium/wiki/InternetExplorerDriver注意标题为“窗口焦点”的部分

[2] http://www.youtube.com/watch?v=myffo8o67OA

[3] http://code.google.com/p/selenium/source/detail?r=16888

由于这是一个已知问题,是否有人有经过尝试和测试的解决方法?

2个回答

我们能够做的唯一解决方法是在没有其他事情发生的情况下在晚上运行测试。(我们也放弃了对 IE 的支持,所以你也可以采取这种方式......)

我用来运行任何类型的 UI 自动化的方法之一是在与我的开发框不同的 VM 上运行它。这使我既可以继续处理现有代码,又可以消除交互问题。然后,我还可以让虚拟机处于休眠状态等,并对那个盒子进行相当离散的控制。