使用Mozilla firefox处理基于窗口的弹出窗口(打印功能)

时间:2016-06-17 15:12:47

标签: java selenium selenium-webdriver mozilla

Image1 Image2我有一个场景,我必须通过点击打印图标和页面来关闭基于窗口的弹出窗口。我知道如何处理窗口,但是当我单击“打印”按钮时,Webdriver对象将保留在父页面上,“页面可见”将是“打印”页面以及窗口打印对话框。我尝试使用Robot和Sikuli,最后我意识到问题在于切换webDriver对象。主要任务在这里,webdriver对象所在的页面没有在Mozilla Firefox中对其进行操作

String parentWindowHandler = driver.getWindowHandle(); //存储您的父窗口             String subWindowHandler = null;

#lang hyper-literate/typed typed/racket/base

@(require (for-label typed/racket/base
                     typed/rackunit))

@title{Title}

Hello world.

@chunk[<*>
       (require typed/rackunit)

       ;; Would give an error as typed/racket/base is used on the #lang line:
       ;curry

       (check-equal? ((make-predicate One) 1) #t)

       (define (f [x : 'e123]) x)

       (define ee (ann (f 'e123) 'e123))
       (provide ee)]

作为驱动程序对象在后台的页面,代码片段在按下按键f4后停止。

确切的情况是在Mozilla firefox中登录gmail并打开电子邮件并单击打印图标,然后会出现基于窗口的弹出窗口,关闭基于窗口的弹出窗口

1 个答案:

答案 0 :(得分:0)

您不应该使用Robot关闭窗口。您只需切换到新的(弹出窗口)窗口,然后使用driver.close()关闭窗口。我测试了下面的代码并且它有效。

String mainHandle = driver.getWindowHandle();
for (String winHandle : driver.getWindowHandles())
{
    if (!winHandle.equals(mainHandle))
    {
        driver.switchTo().window(winHandle);
        driver.close();
    }
}

driver.switchTo().window(mainHandle);

此代码假定只打开了两个窗口,即原始窗口和弹出窗口。它将关闭所有不在原始窗口的窗口。