Java Webdriver在尝试处理警报时挂起

Java Webdriver在尝试处理警报时挂起,java,selenium-webdriver,selenium-chromedriver,Java,Selenium Webdriver,Selenium Chromedriver,我正在使用来自的代码。出于某种原因,每当我的测试遇到任何带有警报的内容时,它都不会返回。它击中了这一点: webDriver.switchTo().alert(); 然后永远旋转,再也不会回来。我期望无警报出现异常,但什么也没有发生 我也尝试过,但没有成功。一旦它击中了目标 wait.until(ExpectedConditions.alertIsPresent()); 它永远旋转。我注意到,如果我手动关闭浏览器,它将跳过它而不会引发异常。我正在使用Ubuntu14,最新版本的Chrome,

我正在使用来自的代码。出于某种原因,每当我的测试遇到任何带有警报的内容时,它都不会返回。它击中了这一点:

webDriver.switchTo().alert();
然后永远旋转,再也不会回来。我期望无警报出现异常,但什么也没有发生

我也尝试过,但没有成功。一旦它击中了目标

wait.until(ExpectedConditions.alertIsPresent());
它永远旋转。我注意到,如果我手动关闭浏览器,它将跳过它而不会引发异常。我正在使用Ubuntu14,最新版本的Chrome,最新版本的Webdriver和Chrome驱动程序。我的IDE是IntelliJ IDEA

我找了好一阵子都没找到。有人能告诉我如何解决我的问题吗


(更新)


我已经玩了很多次了,我注意到了一些奇怪的事情。在我的测试中,如果我在代码主体中使用了警报函数,它就可以正常工作。但是,如果我从代码主体调用另一个函数,然后在函数中调用警报函数,它将永远不会从调用中返回。不确定这是否有帮助,但我不知道这有什么关系

我也有同样的问题,以下是我发现的:

  • 无法在lambda中使用switchTo哪个驱动程序实例是参数 e、 g:

    会导致不稳定的行为(有时有效,有时不挂起)。我认为这是因为
    driver.switchTo()
    改变了驱动程序的状态,其中lamdba参数应该是不可变的

  • 浏览器驱动程序版本不兼容,只需更改驱动程序版本即可解决此问题

  •  wait.Until( driver =>  driver.SwitchTo().Alert() );