【问题标题】:handling 4 windows at a time in selenium在 selenium 中一次处理 4 个窗口
【发布时间】:2021-04-01 14:46:28
【问题描述】:

我想在多个窗口之间切换并在每个窗口上执行操作。窗口类型类似于父窗口>>子窗口>>大子窗口>>大子窗口。我有一个处理多个窗口的通用代码,但我无法理解如何调用该函数。我需要这方面的帮助。

您能否解释一下我应该如何调用下面的函数以及 firstWindow 和 secondWindow 中的参数是什么。

下面是代码。

//To Handle Multiple Windows or Switch Between Multiple Windows.
    public void switchWindow(WebDriver driver, String firstWindow, String secondWindow) 
    {
        Set<String> windowHandles = driver.getWindowHandles();
        for(String windows : windowHandles) 
        {
            if(!windows.equals(firstWindow) && !windows.equals(secondWindow)) 
            {
                driver.switchTo().window(windows);
            }
        }
    }

【问题讨论】:

    标签: java eclipse selenium selenium-webdriver


    【解决方案1】:

    我猜这个方法可以帮你切换窗口

        public void switchToNextTab() {
            ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
            driver.switchTo().window(tab.get(1));
        }
        
        public void closeAndSwitchToNextTab() {
            driver.close();
            ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
            driver.switchTo().window(tab.get(1));
        }
    
        public void switchToPreviousTab() {
            ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
            driver.switchTo().window(tab.get(0));
        }
    
        public void closeTabAndReturn() {
            driver.close();
            ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
            driver.switchTo().window(tab.get(0));
        }
    
        public void switchToPreviousTabAndClose() {
            ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
            driver.switchTo().window(tab.get(1));
            driver.close();
        }
    

    例如,如果您打开了 4 个窗口,并且您需要切换到下一个窗口并执行一些操作,您的代码应该如下所示:

    //first window    perform actions...
                      switchToNextTab();
    //second window   perform actions...
                      closeAndSwitchToNextTab();
    //third window    perform actions...
                      closeAndSwitchToNextTab();
    //fourth window   perform actions...
    

    【讨论】:

    • 感谢您的回答,但请您解释一下调用我给出的函数的 firstWindow 和 secondWIdow 的参数应该是什么?
    • 它将父窗口名称作为字符串返回。 String firstWindow = driver.getWindowHandle();
    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多