gpt4 book ai didi

selenium - driver.getWindowhandles()中得到的Set是否保留顺序

转载 作者:行者123 更新时间:2023-12-02 19:04:22 27 4
gpt4 key购买 nike

我很困惑 Selenium 中返回窗口处理的集合是否保留窗口打开的顺序,我的意思是第一个窗口将在第一个位置,下一个窗口将在下一个位置打开,依此类推。

这是代码:

Set<String> handles = driver.getWindowhandles()

最佳答案

这取决于您使用的驱动程序。有些保留顺序,有些不保留。WebDriver protocol表示顺序是任意的:

The Get Window Handles command returns a list of window handles for every open top-level browsing context. The order in which the window handles are returned is arbitrary.

这可能就是为什么所有句柄都放置在 Set 中以防止您通过索引访问句柄的原因。

如果您只有 2 个窗口,则只需切换到非当前窗口即可:

Set<String> handles = driver.getWindowHandles();
handles.remove(driver.getWindowHandle());
driver.switchTo().window(handles.iterator().next());

但是,如果您有 2 个以上的窗口,则跟踪每个新窗口或迭代每个窗口,直到获得预期的窗口:

Set<String> handles = driver.getWindowHandles();
handles.remove(driver.getWindowHandle());

for (String hwnd : handles) {
driver.switchTo().window(hwnd);

if (driver.getCurrentUrl().contains(...)) {
...
}
}

关于selenium - driver.getWindowhandles()中得到的Set是否保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46014256/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com