当前位置: 首页 > 知识库问答 >
问题:

在selenium中一次处理4个窗口

汪臻
2023-03-14

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

你能解释一下我应该如何调用这个下面的函数,以及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);
            }
        }
    }

共有1个答案

拓拔烨赫
2023-03-14

我想这种方法可以帮助您在窗口之间切换

    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...
 类似资料:
  • 我无法在窗口之间切换。打开弹出窗口时光标被击中。无法再前进了。测试案例:打开URL:http://voltaerp.cloudapp.net/VomsDemoV2/点击查询选项卡,然后点击子菜单项“国外查询”。这将把用户重定向到国外查询页面。现在单击绿色加号从弹出菜单中选择一个项目。我到现在都很好。一旦窗口打开,代码就会被卡住。无法读取弹出窗口的ID或将驱动程序切换到弹出窗口,以便我可以选择任何项

  • 在internet explorer中使用selenium,我打开了一个包含javascript代码的新窗口: 当我尝试移动到新窗口时,selenium不会检测到该窗口。打印驱动程序打开的窗口数时,我只得到1: 我的问题:是否可以管理从javascript打开的新窗口? 谢谢你。

  • 问题内容: 我遇到的一种情况是,单击链接网页会打开一个弹出窗口。并且在弹出窗口打开之后,焦点位于弹出窗口中,并且主窗口被禁用。而且我无法将控件转移到弹出窗口。请看下面的代码。 我无法将控件从父窗口转移到弹出窗口。我知道以下命令。 但是它没有太大帮助。请帮我。 问题答案: 当我需要使用以下弹出窗口,关闭它并返回主窗口时,这是我使用的代码。当然,出于此答案的目的已对其进行了简化。它维护原始窗口(主窗口

  • 问题内容: 我不确定seleniumwebdriver是否可以处理Javascript警报/弹出窗口。 我有一个类似的场景: 1.用户上传一个xls文件,然后单击“上传”按钮 2.将显示“警报/弹出窗口”。在窗口上单击“确定” 能够自动执行上述方案,但是在运行脚本时会显示“警报/弹出”窗口。 无论如何,他们可以解决JavaScript警报/弹出窗口的解决方法吗? 问题答案: 您也可以尝试 等待警报

  • 第四,切换到第二个窗口,点击金融链接。 以下代码适用于我: 但是当我尝试将顺序更改为任务时: 但是如果我在切换到雅虎选项卡后刷新页面,这只在Chrome驱动程序中工作,而不是在Firefox驱动程序中。

  • 我们使用Spring Batch进行一些处理,通过Reader读取一些ID,我们希望通过处理器将它们处理为“块”,然后写入多个文件。但是处理器接口一次只允许处理一个项目,我们需要进行批量处理,因为处理器依赖于第三方,不能为每个项目调用服务。 我看到我们可以为“块”中涉及的所有读取器-处理器-写入器创建包装器,以处理列表<>并委托给一些具体的读取器/处理器/写入器。但这对我来说并不是件好事。像这样: