我正在使用 this question 中的代码。由于某种原因,每当我的测试遇到任何带有警报的内容时,它都不会返回。它击中了这个:
webDriver.switchTo().alert();
然后就永远旋转,永不返回。我预计不会出现任何警报异常,但什么也没有发生。
我也尝试过this没有成功。一旦到达
wait.until(ExpectedConditions.alertIsPresent());
它永远旋转。我注意到,如果我手动关闭浏览器,它将跳过它而不会引发异常。我正在使用 Ubuntu 14、最新版本的 Chrome、最新版本的 Webdriver 和 Chrome 驱动程序。我的 IDE 是 IntelliJ IDEA。
我找了很长一段时间,但收效甚微。谁能告诉我如何解决我的问题?
<小时/>
(更新)
我已经对此进行了相当多的尝试,并且注意到了一些奇怪的事情。在我的测试中,如果我在代码主体中使用警报函数,它就可以正常工作。但是,如果我从代码主体调用另一个函数,然后在该函数中调用警报函数,它将永远不会从调用中返回。不确定这是否有帮助,但我不知道为什么这很重要。
我遇到了同样的问题,以下是我发现的内容:
无法在 lambda 中使用 switchTo(驱动程序实例是参数)例如:
wait.Until( driver => driver.SwitchTo().Alert() );
会导致不稳定的行为(有时有效,有时不能,因为它挂起)。我认为这是因为 driver.switchTo()
更改了驱动程序状态,其中 lamdba 参数应该是不可变的。
浏览器驱动版本不兼容,只需更改驱动版本即可解决此问题。
我是一名优秀的程序员,十分优秀!