2016-06-20 3 views
0

Ich bin derzeit ein Problem, wenn ein neues Fenster in unserer aktuellen Web App angezeigt wird.java- WinHandle nicht finden neues Fenster wegen Seitenaktualisierung onclick

Unten ist mein aktueller Code, den ich verwende, um das neue Fenster zu behandeln. Beim Überprüfen der Protokolle wird die ID des ursprünglichen Fensters gespeichert, aber das neue Fenster wird nicht aufgenommen.

String parentHandle = driver.getWindowHandle(); 
driver.findElement(By.xpath("//*[@id='someXpath']")).click(); 

An dieser Stelle ein neues Fenster bevölkert und die ursprüngliche Seite neu geladen, um eine neue Position. (2 Gesamtfenster)

waitVar.waitforpagetoload(); // JS method to handle page being loaded. 
for (String winHandle : driver.getWindowHandles()) { 
    driver.switchTo().window(winHandle); 
} 
System.out.println("Pop up is: " +winHandle); 
System.out.println("Parent window is: " +parentHandle); 

driver.close(); 
driver.switchTo().window(parentHandle); 

Wenn ich die Werte ausdrücke, bekomme ich die gleiche Zeichenkette für Elternteil und neues Fenster. Ich habe auch versucht, dies durch eine for-Schleife auszuführen, um jeden Wert in der driver.getWindowHandles auszugeben und einen Fehler zu erhalten, da es nur einen Wert (übergeordnetes Fenster) für das Array abruft. Ich glaube, das Problem ist, dass der Browser nach dem ersten Klick neu geladen wird. Haben Sie Vorschläge zum Umgang mit dem neuen Fenster gefunden, nachdem das ursprüngliche Elternfenster nach dem Klicken aktualisiert wurde? Vielen Dank!

Antwort

0

Ich habe nicht genügend Zeit für die Code-Abholung zugelassen. Hinzugefügt ein Thread.sleep (3000) explizite warten; und alles funktioniert wie es soll. Während es nicht die sauberste Lösung ist, funktioniert es wie es sollte.

+0

Yuck ... bitte ändern Sie dies in eine Art Wartezeit, so dass es nicht Thread.sleep() ist. – JeffC

+0

Ich habe seitdem den Schlaf entfernt und ging mit einer expliziten Option. Vielen Dank :) –

Verwandte Themen