我点击了我的应用程序网页上的链接,弹出一个新窗口(我正在使用Internet Explorer 11,不允许使用任何其他浏览器)。
该窗口作为html页面打开,代码为:href=fileName.html
。
然而,没有任何Robot框架Selenium2Library关键字会关闭弹出窗口,例如Close Window
,根据文档说,“关闭当前打开的弹出窗口”。但是,此命令将关闭主浏览器窗口,而不是弹出的窗口。
我还尝试使用Get Window
命令的变体,例如Get Window Titles
或Get Window Identifiers
,但它返回主浏览器窗口或没有窗口。
有没有办法关闭弹出的窗口?
由于
修改
以下是该窗口的html链接:
<a title="Birth Proof Code More Information" id="uef-help0" href="birthProofHelp.html" target="_blank" rel="help" data-uefid="uef-li-hlp" data-modal-disable="true">More Info</a>
以下是该窗口的源代码:
!DOCTYPE HTML>
<html>
<head>
<title>Birth Proof</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
A - ALLEGED<br>
B - BIRTH/BAPTISMAL CERTIFICATE (BEFORE THE AGE OF 5) / PREFERRED BIRTH PROOF<br>
C - DEFINITION OF 'CONVINCING EVIDENCE' MET<br>
F - PREVIOUSLY ESTABLISHED BY THE SSA<br>
Q - ESTABLISHED BASED ON EVIDENCE OTHER THAN THAT COVERED UNDER CODES 'B' AND 'C'<br>
</body>
</html>
我尝试睡了60秒才能显示窗口,但它仍无法正常工作。
窗口真的出现了。就像我说的那样,Close Window
关闭了主浏览器窗口而不是弹出的窗口。
根据机器人文档,Get Window Titles
执行此操作:
返回当前浏览器实例已知的所有窗口的标题。
答案 0 :(得分:0)
如果所有其他方法都失败,则java.awt.robot是一个选项。使用Windows快捷方式关闭窗口:ctrl + w。
编辑:添加如何首先关注窗口(我已经使用了一段时间并且它为我工作,我想我最初是从here获得它,从@回答Avinash Jha):
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.win32.W32APIOptions;
...
public interface User32 extends W32APIOptions {
User32 instance = (User32) Native.loadLibrary("user32", User32.class, DEFAULT_OPTIONS);
boolean ShowWindow(HWND hWnd, int nCmdShow);
boolean SetForegroundWindow(HWND hWnd);
HWND FindWindow(String title);
int SW_SHOW = 1;
}
...
User32 user32 = User32.instance;
HWND hWnd = user32.FindWindow("window title");
user32.ShowWindow(hWnd, User32.SW_SHOW);
user32.SetForegroundWindow(hWnd);
然后机器人部分应该是这样的:
import java.awt.*;
import static java.awt.event.KeyEvent.*;
...
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_CONTROL);