wake-up-neo.com

Schließen aller geöffneten Registerkarten mit Ausnahme des ersten Registers/der Hauptregisterkarte mit dem Web-Treiber

Kann mir jemand sagen, wie ich alle geöffneten Registerkarten mit Ausnahme der ersten Registerkarte/Hauptregisterkarte mit Webdriver schließen kann?

Ich habe es unten versucht, aber es schließt auch alle Tabs, einschließlich des ersten Tabs.

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

Bitte hilf mir.

9
Srikanth Nakka

Holen Sie sich alle Fenstergriffe, iterieren Sie sie, wechseln Sie den Web-Treiber zum neuen Griff und rufen Sie die close-Methode auf. Überspringen Sie dies offensichtlich für den ursprünglichen Griff, und wechseln Sie dann wieder zum restlichen Griff.

So etwas wie;

    String originalHandle = driver.getWindowHandle();

    //Do something to open new tabs

    for(String handle : driver.getWindowHandles()) {
        if (!handle.equals(originalHandle)) {
            driver.switchTo().window(handle);
            driver.close();
        }
    }

    driver.switchTo().window(originalHandle);
20
Robbie Wareham

Probieren Sie diesen Code aus, der funktionieren sollte: 

for(String winHandle : driver.getWindowHandles())
  {
    if (winHandle == driver.getWindowHandles().toArray()[driver.getWindowHandles().size()-1])     
     {
      continue;
     }
    driver.switchTo().window(winHandle);
    driver.close();
  }
1
Abhishek_Mishra

Ich habe folgendes getan, um alle Fenster außer dem Hauptfenster zu schließen:

// Find out which handle is the one of the main window
String mainWindow = driver.CurrentWindowHandle;

// Get a list of all windows, except the main window
driver.WindowHandles.Where(w => w != mainWindow).ToList()
    // For each window found
    .ForEach(w =>
    {
        // switch to the window
        driver.SwitchTo().Window(w);

        // close the window
        driver.Close();
    });

// At the end, come back to the main window
driver.SwitchTo().Window(mainWindow);
1
rfcordeiro

Versuche dies:

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

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

        driver.switchTo().window(winHandle);

        driver.close();

}
1
Yanir Calisar

Ich habe eine Utility-Methode, um zum gewünschten Fenster zu wechseln, wie unten gezeigt

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

Sie gelangen zum gewünschten Fenster, sobald der Titel des Fensters als Parameter übergeben wird. In Ihrem Fall können Sie tun.

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

und wechseln Sie dann mit derselben Methode wieder zum übergeordneten Fenster

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

Diese Methode funktioniert effektiv, wenn mehrere Fenster verwendet werden.

0
Abhishek Singh