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