【问题标题】:WebDriver does not accept js alert in ChromeWebDriver 不接受 Chrome 中的 js 警报
【发布时间】:2015-12-16 10:50:33
【问题描述】:

我是 webdriver 的新手,我学会了如何处理来自不同博客的 JS 警报。我找不到我的问题解决方案。实际上,当我要在 Firefox 中接受我的 js 警报时,相同的代码可以正常工作,但是一旦我将浏览器更改为 Chrome,即使我在它不起作用之前和之后等待驱动程序,它也会引发异常。我做错了什么?

driver.findElement(By.xpath(".//*[xxxxxx]")).click();
wait.until(ExpectedConditions.alertIsPresent());

Alert al = driver.switchTo().alert();
wait.until(ExpectedConditions.alertIsPresent());

String Alert1 = al.getText();

al.accept();

System.out.println(Alert1);

Assert.assertEquals(Alert1, "xxxxxxx");

【问题讨论】:

  • 你看到了什么异常?
  • 这里是例外。线程“main” org.openqa.selenium.WebDriverException 中的异常:未知错误:无法从未知错误中确定加载状态:未处理的检查器错误:{“code”:-32000,“message”:“内部错误:结果不是对象“}(会话信息:chrome=47.0.2526.106)(驱动程序信息:chromedriver=2.20.353145(343b531d31eeb933ec778dbcf7081628a1396067),平台=Windows NT 10.0 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:78毫秒
  • 嗨,试试 Thread.sleep(3000);如果我的脚本中出现警报,它的效果很好。无论如何,在这里您也可以尝试使用 javascriptExecutor。

标签: java google-chrome selenium selenium-webdriver


【解决方案1】:

您可以通过将 ChromeDriver 的版本更改为 v2.18 来解决此问题。

当我尝试处理 iframe 中出现的警报时,我遇到了同样的错误。我终于把ChromeDriver的版本改成了v2.18,测试通过了。

ChromeDriver 的这个错误问题可能与您的问题有关。 https://bugs.chromium.org/p/chromedriver/issues/detail?id=1224&colspec=ID%20Status%20Pri%20Owner%20Summary 在 ChromeDriver v2.19、v2.20 和 v2.21 中发现了此问题。

【讨论】:

【解决方案2】:

最后我知道谁是罪魁祸首。 实际上,此警报在 Iframe 和主窗口中执行,并且 Iframe URL 彼此不同。一旦我进入那个 URL 和 Iframe (alert) URL 相同的页面,chrome 就不会引发异常并且相同的代码可以正常工作。

【讨论】:

    【解决方案3】:

    在接受警报之前让一个小线程休眠

        Thread.sleep(100);
        driver.switchTo().alert().accept(); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多