当前位置: 首页 > 面试题库 >

使用selenium处理弹出窗口

苍阳成
2023-03-14
问题内容

我遇到的一种情况是,单击链接网页会打开一个弹出窗口。并且在弹出窗口打开之后,焦点位于弹出窗口中,并且主窗口被禁用。而且我无法将控件转移到弹出窗口。请看下面的代码。

driver.findElement(By.linkText("Click me")).click();// when this line of code is reached then a popup window opens.

System.out.println("After Clicking me"); // After the popup window opens this line of code is never executed.

我无法将控件从父窗口转移到弹出窗口。我知道以下命令。

driver.switchTo().window("popup window");

但是它没有太大帮助。请帮我。


问题答案:

当我需要使用以下弹出窗口,关闭它并返回主窗口时,这是我使用的代码。当然,出于此答案的目的已对其进行了简化。它维护原始窗口(主窗口)的句柄,因此可以使其他窗口有所不同。

它需要一个明确的WebDriverWait,因为在开发过程中我确实遇到了问题,即在实际打开窗口之前运行代码,所以这可能不是理想的条件,

function manipulatePopUp(final WebDriver driver, final WebDriverWait wait) {
    final String mainWindowHandle = driver.getWindowHandle();
    driver.findElement(By.id("linkThatOpensPopUp")).click();

    wait.until(new ExpectedConditions<Boolean>() {
        @Override
        public Boolean apply(WebDriver d) {
            return (d.getWindowHandles().size() != 1);
        }
    });

    for (String activeHandle : driver.getWindowHandles()) {
        if (!activeHandle.equals(mainWindowHandle)) {
            driver.switchTo().window(activeHandle);
        }
    }

    driver.close();
    driver.switchTo().window(mainWindowHandle);
}


 类似资料:
  • 问题内容: 我们正在针对现有代码库运行Selenium回归测试,并且Web应用程序中的某些屏幕使用弹出窗口作为中间步骤。 当前,我们在测试中使用以下命令: … 大多数情况下都可以使用 。偶尔测试将失败在与线 谁能建议一种更好,更 可靠的 方法? 另外,我们主要在IE6和7上运行这些测试。 问题答案: 有用!!只是为了让那些喜欢硒的人们更容易。 这对我使用IE7(正常模式)有效。 真是个令人毛骨悚然

  • 如何使用Selenium WebDriver处理登录弹出窗口?我在这里附上了示例屏幕。我如何输入/输入用户名和密码到这个登录弹出/警报窗口?

  • 我有一个情况显示在下面的SS。 我正在用selenium(Java)测试一些web应用程序,在一个瞬间我同时得到了4个弹出窗口。我想把他们全部解雇,但实际上我不能得到其中的3个。 我在搜索如何处理多个弹出窗口,发现了这个主题:如何在Selenium中处理多个报警弹出窗口确认?-但那不是我要找的。 第一次driver.switchTo().alert()返回一个警报,我可以将它取消。但是第二次,它是

  • 我需要一个解决方案,使用SeleniumWebDriver从IE11中的web应用程序下载PDF文件。请找到下面我正在尝试处理的弹出窗口。 下面是我尝试处理IE弹出窗口的方法,但不幸的是没有任何帮助。 > 我试图使用下面的AutoIT脚本使用AutoIT来处理这个场景。 睡眠(5000) 本地$hIE=wingthandle(“[Class:IEFrame]”) 本地$hCtrl=ControlG

  • 如何在selenium(java)中处理sweet alert弹出窗口- 在此处输入图像描述

  • 问题内容: 我正在尝试使用以下代码处理身份验证弹出窗口: 当我执行测试时,页面会显示身份验证弹出窗口,并且仍会加载直到我单击“取消”按钮。那一刻,我可以访问下一页,这意味着身份验证成功,但仍然始终显示身份验证弹出窗口 问题答案: 警报方法使你可以跳过“ Http基本身份验证”框。 从Selenium 3.4开始,它仍处于beta版本 目前,仅针对