如何处理关于selenium webdriver自动化的背靠背警报

时间:2018-01-03 18:13:23

标签: java selenium-webdriver alerts

情景:

  • On Perform Click - >显示Alert1
  • On Accept Alert1 - >显示Alert2

我能够接受alert1,但是当我编写代码来处理alert2时,也会接受所有警报。 尝试与谷歌不同但没有任何作用

与thread.sleep和等等的不同组合,但没有任何作用。

代码1:

 <style>
.col-md-6{
padding-right: 0px;
padding-left: 0px;
}

</style>

代码2:

Alert alert = driver.switchTo().alert(); 
Thread.sleep(5000);
alert.accept(); // For Alert1 
Thread.sleep(5000); 
alert.accept(); // For alert2 

2 个答案:

答案 0 :(得分:0)

根据评论中的代码(很难阅读由于java评论而发生的事情),您可以尝试这样的事情:

{{1}}

不要以为你真的需要等待,但它是在演示中。

答案 1 :(得分:0)

每个提醒都是一个单独的实体,因此您无法获得第一个提醒,然后.accept()提取两次。第二个代码块没有工作这一事实让我觉得你可能需要在解除第二个代码块出现之后的短暂等待。我会写这样的东西。

WebDriverWait wait = new WebDriverWait(driver, 3);
wait.until(ExpectedConditions.alertIsPresent()).accept();
wait.until(ExpectedConditions.alertIsPresent()).accept();

wait返回等待的内容...在这种情况下是Alert实例,因此您可以链接.accept()。这也可以在第二个实例中重复。

我忘了提到......你不应该需要所有这些睡眠,但无论如何它们都是不好的做法。你可以做一些谷歌搜索和阅读,以获得有关原因的所有细节。请改用WebDriverWait