2013-10-22 89 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