2017-01-31 13 views
-2

Итак, у меня есть этот код, который создает текущее родительское окно url и новое, которое я открываю, выполняя дочерние окна задач. Проблема в том, что этот код выполняет задачу 1, а затем закрывает дочернее окно, но когда он переходит в цикл for(), он открывает другое окно, но не фокусирует его на том, что это окно не вызывает ошибки.Selenium обработки окон браузера в цикле

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 хорошо закрывает свое дочернее окно ... восходит к родителю и открывает еще один ребенок тот, что я хотеть сделать – GiTr3v

ответ

0

В строке driver.switchTo().window(child_window); вы используете WindowHandle первого окна, окно, которое не закрыто и больше не доступны, поэтому NoSuchWindowException.

Каждый раз, когда вы его открываете, вам нужно получить ручку окна для нового окна. Вы можете создать метод для переключения окон

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

И код будет выглядеть следующим образом

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(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^