繁体   English   中英

在 Selenium java 中如何处理弹出窗口

[英]In Selenium java how to handle the pop up

我使用 selenium 2,浏览器版本是 IE 11。我在处理弹出窗口时遇到问题。

场景一:

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 不是真实的

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

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

警报处理程序用于在弹出消息之间切换。

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

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

如果您想关闭/否/取消警报:

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

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

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

有不同类型的警报,应按如下所示进行不同处理。

  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 类型。 您可以使用 switch to alert 方法。

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

  3. DOM 元素类型:有时弹出窗口就像 DOM 元素,动态创建或隐藏直到弹出。 可以使用 find element 方法处理它。

    driver.findElement(locator).Click();

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

driver.quit()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM