【问题标题】:Handle Window Pop Up in Selenium在 Selenium 中弹出句柄窗口
【发布时间】:2015-03-17 12:56:36
【问题描述】:

我正在使用 Selenium,现在有一个条件:

当我点击网页中的按钮时,会弹出一个窗口。

现在我必须单击一个单选按钮(两个中的一个,即使我们发送 TAB 也会起作用),然后单击 OK 按钮。我在网上搜索并了解了“driver.getWindowHandle()”。

但我不知道如何处理新打开的窗口弹出窗口。 在这方面需要帮助。

【问题讨论】:

  • 通过driver.switchTo().window("handle"); 切换到该窗口句柄,其中handle 是您通过driver.getWindowHandle(); 获得的。之后继续。点击“确定”后,然后driver.switchTo.defaultContent();
  • 我确实明白了,但只是想知道在弹出窗口上单击确定的代码是什么。我也是 JAVA 新手,所以我对此感到困惑!

标签: java selenium-webdriver popup


【解决方案1】:

出于切换目的,您可以使用增强的 for 循环:

for (String winHandle : objDriver.getWindowHandles()) {
    objDriver.switchTo().window(winHandle);
}

因此它将控制从一个驱动程序窗口切换到子窗口。

要与窗口上的元素交互,请尝试使用您使用的任何工具查找元素并执行所需的操作切换到窗口后

要返回父窗口,您可以使用相同的循环或使用:

driver.switchTo().defaultContent();

【讨论】:

    【解决方案2】:

    查看我在这篇文章中的回答并阅读 cmets 以帮助您了解 getWindowHandle() 和 getWindowHandles() 之间的区别

    Java: focus is not on pop-window during window handling

    【讨论】:

    • @Nitin - 您无法简单地使用driver.getWindowHandle() 获取弹出窗口的句柄。
    【解决方案3】:

    我们在 Windows/IE C# 项目中使用 AutoItX - https://www.autoitscript.com/site/ 处理了这种情况:

    AutoItX3 autoIt = new AutoItX3();
    var handle = autoIt.WinWaitActive("[window title]", "", 20);
    Assert.IsTrue(handle != 0", string.Format("Was not able to find: {0}", [window title]);
    autoIt.Send("{ESCAPE}"); // tab may work as well for selection
    

    弹出窗口是一个 Windows 窗口,而不是 IE 的一部分,因此 WebDriver 不知道它。 希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多