0

Ich klicke auf einen Link auf einer Webseite in meiner Anwendung und ein neues Fenster erscheint (ich benutze den Internet Explorer 11 und darf keinen anderen Browser benutzen).Roboterrahmen schließen Browser Popup-Fenster

Das Fenster wird als HTML-Seite aus dem folgenden Code geöffnet: href=fileName.html.

Keines der Selenium2Library-Schlüsselwörter des Robot-Frameworks schließt jedoch das Popup-Fenster, z. B. Close Window, das laut der Dokumentation sagt: "Schließt das aktuell geöffnete Popup-Fenster". Dieser Befehl schließt jedoch das Haupt--Browserfenster und NICHT das Popup-Fenster.

Ich habe auch versucht, mit den Varianten der Get Window Befehl wie Get Window Titles oder Get Window Identifiers, aber es gab entweder das Hauptfenster oder keine Fenster zurück.

Gibt es eine Möglichkeit, Pop-up-Fenster zu schließen?

Dank

EDIT:

Hier ist der HTML-Link für das Fenster:

<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> 

Hier ist der Quellcode für das Fenster:

!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> 

I versuchte, 60 Sekunden zu schlafen, damit das Fenster erschien r, und es hat immer noch nicht funktioniert.

Das Fenster wird wirklich angezeigt. Wie ich schon sagte, Close Window schließt das Hauptfenster des Browsers und NICHT das, das auftauchte.

Nach Roboter Dokumentation, Get Window Titles tut dies:

Gibt die Titel aller Fenster auf den aktuellen Browser-Instanz bekannt.

+0

'href = fileName.html' allein wird kein neues Fenster verursachen, sich zu öffnen. Können Sie die _exact_ Definition des Fensters anzeigen? Wenn Sie "Fenster schließen" ausprobiert haben, haben Sie einen Moment gewartet, bis das Fenster erscheint? Sind Sie sicher, dass das Fenster erscheint? Wenn "Fenstertitel abrufen" und "Fensterbezeichner abrufen" nur das Hauptfenster zurückgibt, scheint dieses Popup-Fenster nicht zu erscheinen. –

+0

@BryanOakley Bitte beachten Sie die Bearbeitung in meinem OP – Kingamere

Antwort

0

java.awt.robot ist eine Option, wenn alles andere fehlschlägt. Verwenden Sie die Windows-Verknüpfung, um ein Fenster zu schließen: Strg + w.

EDIT: Hinzufügen, wie das Fenster zuerst zu konzentrieren (Ich habe dies für eine Weile mit und es ist für mich zu arbeiten, ich glaube, ich habe es ursprünglich aus here, Antwort von @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); 

Dann sollte der Roboterteil so etwas wie:

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

Aber wie wähle ich eigentlich das Fenster zum Schließen an erster Stelle? Das ist das Problem. – Kingamere

+0

haben Sie, ich habe die Antwort aktualisiert – sideshowmanny