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并打开电子邮件并单击打印图标,然后会出现基于窗口的弹出窗口,关闭基于窗口的弹出窗口
答案 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);
此代码假定只打开了两个窗口,即原始窗口和弹出窗口。它将关闭所有不在原始窗口的窗口。