如何在使用java关闭Selenium Automation中的当前窗口后切换到现有窗口

时间:2013-10-22 14:09:28

标签: java testing browser selenium automation

实际上,在使用java关闭Selenium Automation中的当前窗口后,我正试图将控件从当前窗口切换到现有窗口。有没有办法做到这一点。我能够控制新打开的窗口,做一些过程&关闭这个。稍后我只需要移动到已有的浏览器窗口。

6 个答案:

答案 0 :(得分:1)

这是我使用的东西,它会检查所有打开的窗口,然后将控制权切换到下一个窗口,并选择关闭旧窗口。

protected final void switchWindows(boolean closeOldWindow) {
    final WebDriver driver = checkNotNull(getDriver(), "missing WebDriver");

    final String currentWindow = driver.getWindowHandle();
    checkNotNull(currentWindow);

    // switch to first window that is not equal to the current window
    String newWindow = null;
    for (final String handle : driver.getWindowHandles()) {
        if (!currentWindow.equals(handle)) {
            newWindow = handle;
            break;
        }
    }

    // if there's another window found...
    if (newWindow != null) {
        if (closeOldWindow) {
            // close the current window
            driver.close();
        }
        // ...switch to the new window
        driver.switchTo().window(newWindow);
    }
}

答案 1 :(得分:0)

我只知道selenium js webdriver有一个类似driver.switchTo().window(windowName)的api可以帮助我们移动到另一个窗口。我对Java API并不熟悉,但它们都来自几乎相同的调用方式。希望这会对你有所帮助。

答案 2 :(得分:0)

你可以用这个 -

        private void handleMultipleWindows(String windowTitle) {
        Set<String> windows = driver.getWindowHandles();

        for (String window : windows) {
            driver.switchTo().window(window);
            if (driver.getTitle().contains(windowTitle)) {
                return; 
            }
        }
    }

答案 3 :(得分:0)

我有一个实用工具方法可以切换到所需的窗口,如下所示

public class Utility 
{
    public static WebDriver getHandleToWindow(String title){

        //parentWindowHandle = WebDriverInitialize.getDriver().getWindowHandle(); // save the current window handle.
        WebDriver popup = null;
        Set<String> windowIterator = WebDriverInitialize.getDriver().getWindowHandles();
        System.err.println("No of windows :  " + windowIterator.size());
        for (String s : windowIterator) {
          String windowHandle = s; 
          popup = WebDriverInitialize.getDriver().switchTo().window(windowHandle);
          System.out.println("Window Title : " + popup.getTitle());
          System.out.println("Window Url : " + popup.getCurrentUrl());
          if (popup.getTitle().equals(title) ){
              System.out.println("Selected Window Title : " + popup.getTitle());
              return popup;
          }

        }
                System.out.println("Window Title :" + popup.getTitle());
                System.out.println();
            return popup;
        }
}

一旦窗口的标题作为参数传递,它将带您进入所需的窗口。在你的情况下,你可以做到。

Webdriver childDriver = Utility.getHandleToWindow("titleOfChildWindow");

然后再次使用相同的方法切换到父窗口

Webdriver parentDriver = Utility.getHandleToWindow("titleOfParentWindow");

此方法在处理多个窗口时有效[/ p>]

答案 4 :(得分:0)

关闭当前窗口后,您将看到父窗口。 要切换回父/上一个窗口,您可以使用以下命令,

  • driver.getUIWindowLocator()switchToFirstWindow();

  • driver.switchTo()defaultContent();

命令。我认为这对你有所帮助。

答案 5 :(得分:0)

请执行以下代码切换回基本窗口或原始窗口。

String vBaseWindowHandle = driver.getWindowHandle();
    Set<String> windows = driver.getWindowHandles();

    for(String temp : windows)
    {
        driver.switchTo().window(temp);
    }

    // Do code for new window

    driver.close();     
    driver.switchTo().window(vBaseWindowHandle);

有关如何在selenium中处理Windows和弹出窗口的更多信息,请转到以下URL。 https://trickyautomationworld.blogspot.in/2018/03/how-to-handle-windows-in-selenium.html https://trickyautomationworld.blogspot.in/2018/03/how-to-handle-popup-in-selenium.html