运行 Windows 10 1809 上 IE 11 的硒测试 - 没有新的 windows 打开

Running selenium tests on IE 11 on Windows 10 1809 - no new windows open

在我的测试机上,我可以这样开始我的测试,但是在测试打开和关闭几个Internet Explorer windows 之后,没有再打开新的windwos。我没有收到错误消息,测试卡住了。

我根据 selenium wiki 检查了每一个设置。

如果我使用 chrome 驱动程序来 运行 chrome 中的测试,一切 运行 都很顺利。

使用的代码如下所示:

var { Builder, By, Key, until, Capabilities } = require("selenium-webdriver");
var ieCapabilities = Capabilities.ie();
var driver = await new Builder().withCapabilities(ieCapabilities).build();
await driver.manage().setTimeouts({ implicit: 3000, pageLoad: 3000, script: 3000 })
await driver.manage().window().setRect({ height: this.initialHeight, width: this.initialWidth });
await driver.get("http://localhost/");
// do the tests
await driver.quit();

代码在 ava 测试中 运行。为了避免问题,我暂时将concurrency设置为1并进行了所有测试serial,但问题仍然存在。

如何让测试运行结束?

有几个问题导致测试挂起:

wait-调用超时

由于 IE 中的行为有点不同,缺少超时导致测试挂起。

错误代码:

await driver.wait(until.stalenessOf(elementSelectMenu));

正确代码:

await driver.wait(until.stalenessOf(elementSelectMenu), 6000);

缺少 await 个语句

这在 firefox 或 chorme 中从来都不是问题,但导致 IE 崩溃。

引起问题的代码:

driver.findElement([...]).click();

正确代码:

await driver.findElement([...]).click();

在 TLS (https) 网站上使用 selenium 时遇到问题

有些测试必须使用 TLS 检查网站上的内容。在 IE 上,测试抛出错误。

解决方法是禁用所有区域 protected mode