2017-01-31 10 views
-2

So habe ich diesen Code, der aktuelle URL Elternfenster und neue, die ich durch Aufgaben Kind Fenster zu öffnen. Das Problem ist, dass dieser Code Aufgabe 1 dann Kind-Fenster schließt, aber wenn es für for() -Schleife geht, öffnet es ein anderes Fenster, aber nicht Fokus es wirft Fehler kein solches Fenster.Selen Umgang mit Browser-Fenstern in Schleife

String parent=driver.getWindowHandle(); 
Set<String>s1=driver.getWindowHandles(); 
Iterator<String> I1= s1.iterator(); 

while(I1.hasNext()){ 
    String child_window=I1.next(); 
    if(!parent.equals(child_window)) 
    { 
    driver.switchTo().window(child_window); 
    //do task number 1 
    driver.close(); 
for(int x = 1; x < 9000; x = x + 1) { 
    driver.switchTo().window(parent); 
    //opens another window 
    driver.switchTo().window(child_window); 
    //do task 2 
    driver.close(); 
    } 
    } 
} 
+0

@ GrzegorzGórkiewicz sieht schaffen gut es schließt mein Kind Fenster ... geht zurück auf Eltern und öffnet sich ein weiteres Kind, was das ist, i möchte tun – GiTr3v

Antwort

0

In der Zeile driver.switchTo().window(child_window); Sie die WindowHandle des ersten Fensters verwenden, Fenster, die Sie nicht geschlossen und mehr verfügbar ist, daher der NoSuchWindowException.

Sie müssen den Fenstergriff für das neue Fenster jedes Mal öffnen, wenn Sie eines öffnen. Sie können ein Verfahren zur Schaltfenster

private void switchToWindow(String parentHandle) { 
    Set<String> windowHandles = driver.getWindowHandles(); 
    for(String windowHandle : windowHandles) { 
     if (!parentHandle.equals(windowHandle)) { 
      driver.switchTo().window(windowHandle); 
      return; 
     } 
    } 
} 

Und der Code wie dieser

String parentHandle = driver.getWindowHandle(); 

switchToWindow(parentHandle); 
//do task number 1 
driver.close(); 

for(int x = 1 ; x < 9000 ; x += 1) { 
    driver.switchTo().window(parentHandle); 
    //opens another window 
    switchToWindow(parentHandle); 
    //do task 2 
    driver.close(); 
}