WebDriver不接受Chrome中的js警报

时间:2015-12-16 10:50:33

标签: java google-chrome selenium selenium-webdriver

我是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");

3 个答案:

答案 0 :(得分:4)

您可以通过将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中找到。

答案 1 :(得分:2)

最后我得到了谁是罪魁祸首。 实际上,此警报在Iframe和主窗口中执行,并且Iframe网址彼此不同。一旦我在该页面上访问哪个URL和Iframe(警报)URL相同,那么chrome不会引发异常并且相同的代码正常工作。

答案 2 :(得分:-1)

在接受警报

之前先放一个小线程
    Thread.sleep(100);
    driver.switchTo().alert().accept();