我在尝试关注使用selenium web驱动程序打开的最新新标签时遇到了问题。
以某种神秘的方式,当我尝试在2个标签之间进行更改时, 但是当我试图用4个标签做这个时,它总是把焦点放在第3个标签上。
这是获取WebDriver元素的函数的代码:
t
这是我打印标签时的输出:
t
你可以看到第一行是所有的ArrayList。 第二行只是我想要关注的最后一个标签。
我在这里错过了一些东西吗?答案 0 :(得分:0)
我没有看到这个问题。
__builtin_ctzl
包含一个句柄列表(可能是也可能不是您在浏览器中看到的顺序)。
Edit Title
返回4(4个标签)。因此Page Number
为tabs
或tabs.size()
。
由于java为0索引,因此tabs.get(tabs.size() - 1))
是最后一个选项卡。看看上面的输出是正确的;的 CDwindow-(4B50A8C4074BEDB41152003DED37FB32)强>
第三个标签在哪里; CDwindow-(33FB208B51A8DD5F7DB947C7B0BAB9DD)?
如果您将窗口映射到名称,我发现更容易跟踪:
tabs.get(4 -1 )
第一个String是您自己的描述符,如“Admin”或“Facebook”,第二个String是WindowHandle。您需要逐个添加窗口以跟踪它们。
tabs.get(3)
但是当你想切换时可以使用:
tabs.get(3)
消除所有困惑。
答案 1 :(得分:-1)
所以,经过一些调试后 - 我只是写了一个if语句,它会停在我想要的页面上。
Set<String> handles = driver.getWindowHandles();
String currentHandle = driver.getWindowHandle();
for (String handle : handles) {
if (!handle.equals(currentHandle)) {
driver.switchTo().window(handle);
if(whatImLookingFor)
break;
}
}
问题已经解决了,但我认为值得尝试了解这一点以满足未来的需求......