0

我点击我的应用程序中的网页链接,弹出一个新窗口(我使用Internet Explorer 11,不允许使用任何其他浏览器)。机器人框架关闭浏览器弹出窗口

窗口从代码打开为html页面:href=fileName.html

但是,Robot框架Selenium2Library关键字都不会关闭弹出窗口,例如Close Window,根据文档说明,“关闭当前打开的弹出窗口”。但是,该命令关闭了浏览器窗口,而不是弹出窗口。

我也尝试使用Get Window命令的变体,如Get Window TitlesGet 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秒,以便窗口出现r,但它仍然不起作用。

窗口真的出现。就像我说的,Close Window关闭主浏览器窗口,而不是弹出的窗口。

根据机器人的文件,Get Window Titles做到这一点:

返回已知当前浏览器实例的所有窗口的标题。

+0

'HREF = fileName.html'本身不会引起新窗口中打开。你能显示窗口的_exact_定义吗?当你尝试过“关闭窗口”时,你是否等了一会儿让窗口有机会出现?你确定窗户出现了吗?如果“获取窗口标题”和“获取窗口标识符”仅返回主窗口,则看起来这个弹出窗口没有出现。 –

+0

@BryanOakley请参阅我的OP – Kingamere

回答

0

如果一切都失败,则java.awt.robot是一个选项。使用窗口快捷键关闭一个窗口:ctrl + w。

编辑:添加了如何首先关注的窗口(我一直在使用这一段时间,它的工作对我来说,我想我最初得到它从here,从@Avinash杰哈答案):

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); 
+0

中的编辑内容。但是,我怎样才能真正选择那个窗口关闭呢?那就是问题所在。 – Kingamere

+0

找到了你,我已经更新了答案 – sideshowmanny