使用Java

时间:2017-11-07 06:41:13

标签: java selenium selenium-webdriver hybrid

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

我的应用程序中有3个或4个窗口,使用下面的代码成功打开2个窗口:当我想执行3窗口时,下面的代码重定向到第1个窗口,我无法执行超过2个窗口。

--------------------------------- CODE ------------- -------------------------------------------------- ---------------------------

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

              }
          }

3 个答案:

答案 0 :(得分:0)

我不确定100%,但在切换到帧之前尝试

driver.switchTo.defaultContent()

答案 1 :(得分:0)

伙计们,下面的代码正在运行!我找到了解决方案

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


        }

答案 2 :(得分:0)

试试这个。

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

}

只需传递窗口编号要执行的窗口,例如如果要切换到3窗口只需将3传递给此方法,它可以直接随机播放到任何窗口                                                                                               (例如:1到9个窗口,或9到4个窗口)