0

实际上,在使用 java 关闭 Selenium Automation 中的当前窗口后,我正在尝试将控件从当前窗口切换到现有窗口。有没有办法做到这一点。我可以控制新打开的窗口,做一些处理并关闭这个。后来我只需要移动到已经存在的浏览器窗口。

4

6 回答 6

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);
    }
}
于 2013-10-25T21:07:51.397 回答
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; 
            }
        }
    }
于 2013-10-22T15:18:42.640 回答
0

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

于 2013-10-22T14:17:03.380 回答
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");

此方法在处理多个窗口时有效

于 2013-10-27T06:03:06.840 回答
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

于 2018-03-09T08:35:43.910 回答
0

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

  • driver.getUIWindowLocator().switchToFirstWindow();

  • driver.switchTo().defaultContent();

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

于 2017-06-23T10:46:25.690 回答