在Selenium Java中如何处理弹出

时间:2018-07-23 07:42:38

标签: java selenium popup

我使用硒2,浏览器版本为IE11。在处理弹出窗口时遇到问题。

场景1:

driver.findElement(By.id("I create modal window")).click();
Set<String> windows = driver.getWindowHandles();
System.out.println(windows.size());

我得到的输出为 2

场景:2 (具有相同的概念)

driver.findElement(By.id("I create pop up")).click();
Set<String> windows = driver.getWindowHandles();
System.out.println(windows.size());

我得到的输出为 1

我无法切换到弹出窗口。有时,弹出窗口响应就像未连接一样,而且弹出窗口的大小比应有的小。

会有什么问题

注意:元素ID不是真实的

4 个答案:

答案 0 :(得分:0)

从您的问题来看,您似乎想切换到弹出式窗口。

窗口处理程序用于在浏览器窗口之间切换。

Alert handler用于在弹出消息之间切换。

如果您想接受/是/确定警报:

Alert alert = driver.switchTo().alert();
alert.accept();

如果您要关闭/取消/取消警报:

Alert alert = driver.switchTo().alert();
alert.dismiss();

答案 1 :(得分:0)

您必须首先检查其窗口或警报。

只需尝试检查该弹出窗口中的元素,如果您能够检查弹出窗口中的元素,则可以使用其窗口,因此请使用switch to window命令,如果没有,则它会很警报。因此,请使用switch to alert命令(在另一个答案中提供)

答案 2 :(得分:0)

警报类型不同,应按以下方式进行不同处理。

  1. Windows类型: 如果弹出窗口是在新窗口中打开的,则可以使用“获取”窗口句柄来处理它,并切换到窗口方法。

    driver.selectElement(By.id("I create modal window")).click(); Set<String> windows = driver.getWindowHandles(); System.out.println(windows.size()); for( String window : windows) driver.switchToWindow(window);

  2. JavaScript警报: 如果弹出窗口是javascript类型。您可以使用切换警报方法。

    Alert alert = driver.switchTo().alert();

  3. DOM元素类型: 有时弹出窗口就像DOM元素一样,是动态创建的或隐藏到弹出窗口为止。可以使用find elemeent方法进行处理。

    driver.findElement(locator).Click();

答案 3 :(得分:0)

我还没有解决我的问题,但是我发现了一些有趣的事情:当我打开一个弹出窗口时,即使我不使用Selenium打开我的网站,它也不会连接到当前会话,即使不要求Selenium打开我的网站也是如此。弹出窗口,但我自己做。如果是id:

driver.quit()

主窗口将关闭,但不会弹出