12

webdriverを使用して最初のタブ/メインタブを除く、開いているすべてのタブを閉じる方法を教えてもらえますか?

以下で試してみましたが、最初のタブも含めてすべてのタブを閉じています。

public static void closeTabs() {
    String wh1=driver.getWindowHandle();
    String cwh=null;
    while(wh1!=cwh)
    {   
    new Actions(driver).sendKeys(Keys.CONTROL).sendKeys(Keys.NUMPAD1).perform();
    driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL, Keys.TAB);
    cwh=driver.getWindowHandle();
    driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL+"w");
    }
}

私を助けてください。

4

7 に答える 7

1

動作するはずのこのコードを試してください:

for(String winHandle : driver.getWindowHandles())
  {
    if (winHandle == driver.getWindowHandles().toArray()[driver.getWindowHandles().size()-1])     
     {
      continue;
     }
    driver.switchTo().window(winHandle);
    driver.close();
  }
于 2013-08-29T08:13:33.543 に答える
1

これを試して:

for(int i = driver.getWindowHandles().size() -1 ; i > 0 ; i--){

        String winHandle = driver.getWindowHandles().toArray()[i].toString();

        driver.switchTo().window(winHandle);

        driver.close();

}
于 2016-10-14T03:27:09.323 に答える
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");
childDriver.close();

同じ方法を使用して親ウィンドウに再度切り替えます

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

この方法は、複数のウィンドウを扱う場合に効果的です。

于 2013-08-29T09:06:59.873 に答える