【问题标题】:How to switch back to parent window in Selenium WebDriver?如何在 Selenium WebDriver 中切换回父窗口?
【发布时间】:2016-08-26 18:07:09
【问题描述】:

我需要关闭一个子窗口并切换回父窗口进行一些操作。

public void setUp() throws Exception {
    driver = new FirefoxDriver();
    baseUrl = "http://www.example.com/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void testUntitled2() throws Exception {
    driver.get(baseUrl + "/info.php");
    driver.findElement(By.cssSelector("i.fa.fa-facebook-sq")).click();
    for (String winHandle : driver.getWindowHandles()) {
        driver.switchTo().window(winHandle);
    }

    // Perform the actions on new window
    driver.close(); // This will close new opened window

    //driver.switchTo().window(winHandleBefore); // I need to perform below

    driver.findElement(By.cssSelector("i.fa.fa-twitter-square")).click();
    driver.findElement(By.cssSelector("i.fa.fa-google-plus-  squ)).click();
    driver.findElement(By.cssSelector("i.fa.fa-linkedin-square")).click();
}

【问题讨论】:

标签: java selenium-webdriver


【解决方案1】:

您可以使用此代码切换到子窗口,然后返回父窗口。

代码:

   String parentWindowHandler = driver.getWindowHandle(); // Store your parent window
            String subWindowHandler = null;

            Set<String> handles = driver.getWindowHandles(); // get all window handles
            Iterator<String> iterator = handles.iterator();
            while (iterator.hasNext()){
                subWindowHandler = iterator.next();
            }
            driver.switchTo().window(subWindowHandler); 

*****perform operations on child window******************

driver.switchTo().window(parentWindowHandler);

希望能解决你的问题

【讨论】:

    【解决方案2】:

    for 循环之前创建一个parentWindowHandle 字符串变量并将窗口句柄存储在那里。完成对子窗口的操作后,返回parentWindowHandle

    String parentWindowHandle = driver.getWindowHandle();
    /* You code to move to child window*/
    
    //After you done with child window
    driver.switchTo().window(parentWindowHandle);
    

    【讨论】: