我正在运行来自 Jenkins (3.5.3) 的最新 selenium 代码,并且我的测试通过网格发送到运行 Windows Server 2012 的 VM 节点。如果我尝试在我的节点上运行 IEDriverServer 64 位 (3.5.1), sendkeys 慢得让人难以忍受。我已经读过很多次了,使用 32 位 IEDriverServer 可以工作,但是当我执行测试时它甚至不会加载 IE。
疯狂的是,昨天这工作了 9 个小时(我有数百个测试,这是正确的时间范围)。当我今天再次重新运行测试时,它们开始正常,但几个小时后我注意到我的测试没有通过,所以我检查了虚拟机并且文本正在爬行。为什么会发生这样的事情?我从理论上理解缓慢的发送键是因为位不匹配,但为什么 64 位 exe 会工作几个小时然后停止工作?
不管它值多少钱,这是我的 webdriver 定义:
InternetExplorerOptions ieOptions = new InternetExplorerOptions()
.destructivelyEnsureCleanSession();
caps = DesiredCapabilities.internetExplorer();
caps.setBrowserName("internet explorer");
caps.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING, false);
WebDriver driver = new RemoteWebDriver(new URL(nodeURL), ieOptions.merge(caps));
return driver;
我一直在研究并试图解决这个问题好几个星期。这让我疯狂。有任何想法吗?非常感谢!
编辑:查看开始变慢的测试,结果发现我在该测试中删除了一个 cookie。从我读到的关于 IE 的内容来看,它并不总是能正确处理删除 cookie。我可以轻松地重新编写该测试,但现在无论运行什么测试,文本总是运行缓慢。有没有人遇到过这种情况?
(副节点:我讨厌 IE。仅此而已)。