在selenium webdriver中的两个窗口之间切换

时间:2015-01-15 09:27:36

标签: windows

我使用此代码收到NoSuchWindowException错误。我无法切换回旧的打开窗口并返回新窗口 请查看我的代码并帮助我。

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

1 个答案:

答案 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)