开发者社区> 问答> 正文

如何使用硒中的索引切换到窗口

由于硒不提供切换到窗口(多个窗口)的方法,但我想使用索引来制作自定义方法以切换到不同的窗口。但是下面的代码无法按预期工作。请建议以下方法的最佳实现。

public void switchToWindowIndex(int index) {
    Set<String> windows = driver.getWindowHandles();
    int totalWin = windows.size();
    String winTitle = null;
    for (int i =0; i<= totalWin; i++) {
        if (i == index) {
            winTitle = windows.toArray()[i].toString();
            return;
        }
        System.out.println(windows.toArray()[i].toString());

    }
    driver.switchTo().window(winTitle);
    logger.info("Switched to " + driver.getTitle());
}

提前致谢。

展开
收起
垚tutu 2019-12-12 09:48:36 877 0
1 条回答
写回答
取消 提交回答
  • #include

    如果必须基于索引切换到窗口,则无需遍历所有窗口句柄。您可以执行以下操作:

    public void switchToWindowIndex(int index) {
        Set<String> windowHandles = driver.getWindowHandles();
        List<String> windowStrings = new ArrayList<>(windowHandles);
        String reqWindow = windowStrings.get(index);
        driver.switchTo().window(reqWindow);
        logger.info("Switched to " + driver.getTitle());
    }
    
    

    代码说明:获取窗口句柄

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

    将设置为arraylist的窗口句柄转换为基于索引的字符串

    List<String> windowStrings = new ArrayList<>(windowHandles);
    
    

    根据索引获取窗口句柄字符串

    String reqWindow = windowStrings.get(index);
    
    

    切换到所需窗口

    driver.switchTo().window(reqWindow);
    
    2019-12-12 09:49:07
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载
4个迭代,从批量交...1573957773.pdf 立即下载
《解决方案A4折页-游戏_复制》 立即下载