Java 如何在Selenium WebDriver中处理2警报
我有一个自动化场景来执行内容搜索。问题发生在搜索结果屏幕上,其中有两个Javascript警报弹出窗口几乎同时出现。我说几乎是因为弹出窗口一个接一个地出现,而不是一次出现所有窗口。我设法处理了第一个问题,但没有处理第二个问题。第二个警报处理程序代码发生NoAlertPresentException 以下是警报发生的地方:Java 如何在Selenium WebDriver中处理2警报,java,selenium,selenium-webdriver,alert,Java,Selenium,Selenium Webdriver,Alert,我有一个自动化场景来执行内容搜索。问题发生在搜索结果屏幕上,其中有两个Javascript警报弹出窗口几乎同时出现。我说几乎是因为弹出窗口一个接一个地出现,而不是一次出现所有窗口。我设法处理了第一个问题,但没有处理第二个问题。第二个警报处理程序代码发生NoAlertPresentException 以下是警报发生的地方: public WSSPage enterAndSearchContent(String title) { waitWSSPageLoaded();
public WSSPage enterAndSearchContent(String title) {
waitWSSPageLoaded();
waitForElementTextWithEnter(searchTextField, title);
waitWSSPageLoaded();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
alert.dismiss();
wait.until(ExpectedConditions.alertIsPresent()); //NoAlertPresentException happened here
Alert alert2 = driver.switchTo().alert();
alert2.dismiss();
return PageFactory.initElements(driver, WSSPage.class);
}
我还尝试使用alert.discouse()
两次,但在第二次警报时仍会给出NoAlertPresentException代码>如以下代码所示:
public WSSPage enterAndSearchContent(String title) {
waitWSSPageLoaded();
waitForElementTextWithEnter(searchTextField, title);
waitWSSPageLoaded();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
alert.dismiss();
alert.dismiss(); //NoAlertPresentException happened here
return PageFactory.initElements(driver, WSSPage.class);
}
当我尝试手动解除警报时,第二个警报几乎立即出现。我想问题是代码无法捕获第二个警报,因为它太快了?
这个问题有解决办法吗?多谢各位
注:
我正在使用Firefox使用windowHandle并获取当前窗口的id。现在检查弹出窗口1并切换并关闭。使用windowHandle切换到窗口id标记为向下的窗口。现在再次检查弹出窗口2,然后切换并关闭。@santhoshkumar我按你说的做了尝试,但它无法切换到弹出窗口2。根据您的建议,它应该是主窗口中的焦点,然后将焦点切换到弹出窗口1,然后关闭。然后它应该回到主窗口的焦点,切换到弹出窗口2,关闭。发生在我身上的事情是:当它聚焦回主窗口后,它就停留了。没有切换到弹出窗口2我不知道为什么…在聚焦回主窗口(弹出窗口1已关闭)后,弹出窗口2是否可见并正确处理。我可以从我的本地计算机上查看您的完整代码吗?是的,popup2是可见的,等待处理正确。很抱歉,我恐怕不能给你,因为它涉及到许多源代码,但我真的很感激你的意图。非常感谢。在解除并切换回主窗口后。你能做一次刷新并尝试一下吗?