java - 尝试处理警报时 Webdriver 挂起

标签 java selenium-webdriver selenium-chromedriver

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

webDriver.switchTo().alert();

然后就永远旋转,永不返回。我预计不会出现任何警报异常,但什么也没有发生。

我也尝试过this没有成功。一旦到达

wait.until(ExpectedConditions.alertIsPresent());

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

我找了很长一段时间,但收效甚微。谁能告诉我如何解决我的问题?

<小时/>

(更新)

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

最佳答案

我遇到了同样的问题,以下是我发现的内容:

  1. 无法在 lambda 中使用 switchTo(驱动程序实例是参数) 例如:

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

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

  2. 浏览器驱动版本不兼容,只需更改驱动版本即可解决此问题。

关于java - 尝试处理警报时 Webdriver 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26516254/

相关文章:

java - Jdbc方法返回结果不一致

java - Spring MVC 集成 Thymeleaf

internet-explorer - Firefox配置文件首选项vs Chrome选项vs IE所需功能

python - 如何使用 Python 和 Selenium WebDriver 获取 localStorage

java - 限制某些方法的有效负载 CommonsRequestLoggingFilter Spring

java - 在 CentOS 上将 SymmetricDS 作为服务运行

android - 异常线程 "main"org.openqa.selenium.remote.UnreachableBrowserException : Could not start a new session, 使用 appium 时

c# - 如何让 selenium 等待基于 XMLHttpRequest 的请求的 ajax 响应

java - org.openqa.selenium.WebDriverException : chrome not reachable using Selenium and ChromeDriver

ruby - 使 headless 浏览器停止加载页面