2015-01-15 5 views
0

이 코드에서는 NoSuchWindowException의 오류가 발생합니다. 이전 열린 창으로 다시 전환 할 수 없으며 새 창으로 돌아갑니다. 내 코드를 검토하고 도와주세요.selenium webdriver의 두 창 사이를 전환하십시오.

public void TC_123617()throws InterruptedException  { 
     driver.findElement(By.id("user_login")).sendKeys("akhil"); 
     driver.findElement(By.id("user_pass")).sendKeys("akhil"); 
     driver.findElement(By.id("wp-submit")).click(); 
     Thread.sleep(3000); 
     driver.findElement(By.cssSelector("#awebsome_oruw-2 > ul")).click(); 
     WebElement userStatus = driver.findElement(By.xpath(".//*[@id='awebsome_oruw-2']/ul/li[11]")); 
     String parentWindow = driver.getWindowHandle();   
     driver = new FirefoxDriver();   
     driver .manage().window().maximize();   
     driver.get("http://103.16.143.96/incis/wp-login.php"); 
     driver.findElement(By.id("user_login")).sendKeys("manager"); 
     driver.findElement(By.id("user_pass")).sendKeys("manager"); 
     driver.findElement(By.id("wp-submit")).click(); 
     for (String popUpHandle : driver.getWindowHandles()) { 
      if(!popUpHandle.equals(parentWindow)){ 
       driver.switchTo().window(popUpHandle);  
      driver.switchTo().window(parentWindow); 
      } 
     } 
    } 
+0

를 사용하여 당신의 행동은 당신이 파이어 폭스의 새로운 인스턴스를 생성하는 운전사? –

답변

0

드라이버를 사용하여 창을 전환하려면 새 드라이버 인스턴스를 만들 필요가 없습니다. 현재 창에 대한 참조를 저장합니다. (당신이 창에서 작업을 수행 할 수 돌아갈 수 있도록 당신은에서 시작했다.)

String parentWindow = driver.getWindowHandle();

다음 단계, 모든 창을 얻고 새 창으로 전환합니다. 이제

List<String> allWindows = driver.getWindowHandles(); for(String curWindow : allWindows){ driver.switchTo().window(curWindow); }

새 창에서 모든 작업을 수행 할 수 있으며, 완료되면 당신은 계속 부모 윈도우로 전환 할 수 있습니다,

마지막으로 driver.close();

사용하여 닫을 수

driver.switchTo().window(parentWindow)

관련 문제