加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用selenium处理弹出窗口

发布时间:2020-12-14 19:27:23 所属栏目:Java 来源:网络整理
导读:我有一种情况,点击链接网页打开一个弹出窗口.弹出窗口打开后,焦点位于弹出窗口中,并禁用主窗口.我无法将控件转移到弹出窗口. 请查看以下代码. driver.findElement(By.linkText("Click me")).click();// when this line of code is reached then a popup wind
我有一种情况,点击链接网页打开一个弹出窗口.弹出窗口打开后,焦点位于弹出窗口中,并禁用主窗口.我无法将控件转移到弹出窗口.
请查看以下代码.
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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读