使用 Java 处理 Selenium 中的多个 Windows

Handlng the Multiple Windows in Selenium By using Java

任何人都可以帮我解决 windows 在 selenium webdriver Java 中的处理问题。

我的应用程序中有 3 或 4 个 windows,使用以下代码成功打开了 2 个 windows:当我想使用以下代码执行 3 window 时,它会重定向到第一个window,我无法执行超过 2 个 windows。

--------------------------------代码------------ ---------------------------------------------- ----------------------------

 String parent=driver.getWindowHandle();

 CompanyClick.click();

 Set<String>s1=driver.getWindowHandles();

 int count=s1.size();

System.out.println("Total window"  +count);

        for(String child:s1)
        {
            if(!parent.equalsIgnoreCase(child)) {
                driver.switchTo().window(child);

                Thread.sleep(3000);

              }
          }

我不确定 100% 但在切换到框架之前尝试

driver.switchTo.defaultContent()

伙计们,下面的代码有效!我找到了解决方案

    String adminWindow = driver.getWindowHandle();

    System.out.println(adminWindow);

    ClickBuissness.click();

    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

    Set<String> allWindows = driver.getWindowHandles();

    String agentWindow = null;

    int count =allWindows.size();

    System.out.println("Total window"  + count);

    for(String windowHandle : allWindows){

        if (!windowHandle.equals(adminWindow))

            agentWindow=windowHandle;
    }
        driver.switchTo().window(agentWindow);


        }

试试这个。

 public void SwitchToAnotherWindow(Webdriver driver,int window_number){

     List<String> windowlist = null;

    Set<String> windows = driver.getWindowHandles();

    windowlist = new ArrayList<String>(windows);

   String currentWindow = driver.getWindowHandle();

 if (!currentWindow.equalsIgnoreCase(windowlist.get(window_number - 1))) 
    {
        driver.switchTo().window(windowlist.get(window_number - 1));
     }

}

只需传递 window number 你想要执行的 window 例如,如果你想切换到 3 window 只需将 3 传递给它方法,可以直接shuffle到任意window (对于 ex:1 到 9 window,或 9 到 4 window )