2017-07-23 5 views
1

Also habe ich einen Selen-Webdriver, der mich in eine Webseite einloggt und von dort klicke ich auf einen Knopf, der ein zweites Fenster öffnet. Ich benutze diesen Code unten, um zum neuen Fenster zu wechseln.Selen prüfen, ob ein Fenster geöffnet ist

Jetzt auf diesem zweiten Fenster ich einige Automatisierung laufen lassen. Sobald ich fertig bin, drücke ich den Speichern Knopf und das würde das aktuelle Fenster schließen. Wenn das Fenster sich nicht schließt, bedeutet das, dass ich einige Fehler auf der Seite habe und ich muss zurückschleifen und es beheben.

Das Programm funktioniert wie erwartet, wenn es die Fehler abfängt und das Fenster nicht geschlossen wird. Sobald aber alles klar ist und sich das Fenster schließt, trägt es die obige if-Anweisung ein und zeigt diesen Fehler an.

Die Nachricht vom Renderer konnte nicht empfangen werden.

Ich glaube, dass ich nicht überprüfe, ob das Fenster richtig geschlossen wurde.

edit: nach ein paar Debuggen scheint es, wenn das Fenster einmal geschlossen ist, kann das Programm nicht wirklich sagen, was als nächstes zu tun ist. http://i.imgur.com/l8nsPPr.png

+0

Könnte dieser Link Ihnen helfen? https://stackoverflow.com/questions/27616470/webdriver-how-to-check-if-browser-still-exists-or-still-open – SomeStudent

Antwort

0

Ich empfehle die Verwendung von WindowHandle dafür. Sie speichern das erste Fenster in String winParent = driver.getWindowHandle();

Dann wechseln Sie zum zweiten Fenster, das unterschiedliche Handle haben wird. Wenn Sie überprüfen müssen, ob das zweite Fenster noch geöffnet ist, verwenden Sie einfach:

private boolean isNewWindowOpened(WebDriver driver, String parentWindowHandle) { 
    try { 
     return !driver.getWindowHandle().equals(parentWindowHandle); 
    } catch (Exception ex) { 
     driver.switchTo(parentWindowHandle); 
     return false; 
    } 
+0

Ich musste den Fang in 'driver.switchTo(). Fenster (parentWindowHandle); ' aber das funktioniert nicht Ich habe die Fenster durch den Debugger verfolgt und obwohl das Fenster geschlossen wurde. driver.getWindowHandle() zeigte immer noch auf dieses geschlossene Fenster. –

Verwandte Themen