2013-10-22 90 views
0

其实,我试图用java关闭硒自动化在当前操作后从当前窗口切换控制,以现有的窗口中硒自动化关闭当前窗口后如何切换到现有的窗口。有没有办法做到这一点。我能控制新开的窗口,做一些处理&关闭这一个。后来我只需要移动到已经存在的浏览器窗口。用java

回答

0

我才知道JS硒webdriver的有像driver.switchTo().window(windowName)一个API可以帮助我们移动到另一个窗口。我对Java API并不是很熟悉,但它们几乎都是以相同的方式调用。希望这会帮助你。

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

这是值得我用,这将检查所有打开的窗口,然后switchess控制到下一个窗口选项,收出旧的窗口。

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

此方法有效地使用多个窗口

0

处理一旦你关闭当前窗口时,你会看到切换到父窗口父窗口。 要切换回你的父母/前一个窗口,你可以使用下面的命令,

  • driver.getUIWindowLocator()switchToFirstWindow()。 。

  • driver.switchTo()defaultContent();

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

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

有关如何处理Windows和Selenium弹出式窗口的详细信息,请转到下面的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