Selenium chrome webDriver - 专注于最新的开放新标签java

时间:2018-02-06 14:52:13

标签: java selenium-webdriver selenium-chromedriver

我在尝试关注使用selenium web驱动程序打开的最新新标签时遇到了问题。

以某种神秘的方式,当我尝试在2个标签之间进行更改时, 但是当我试图用4个标签做这个时,它总是把焦点放在第3个标签上。

这是获取WebDriver元素的函数的代码:

t

这是我打印标签时的输出:

t

你可以看到第一行是所有的ArrayList。 第二行只是我想要关注的最后一个标签。

我在这里错过了一些东西吗?

2 个答案:

答案 0 :(得分:0)

我没有看到这个问题。

__builtin_ctzl包含一个句柄列表(可能是也可能不是您在浏览器中看到的顺序)。 Edit Title返回4(4个标签)。因此Page Numbertabstabs.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;
     }
   }

问题已经解决了,但我认为值得尝试了解这一点以满足未来的需求......