阻止Selenium在单击链接时打开新窗口

8
我正在将我的Selenium测试导出到Python,并在shell中运行测试。 我到达某个时候,单击链接后,Web驱动程序打开一个全新的Firefox窗口,然后出现错误,指出驱动程序无法在页面上找到输入选项。 我认为问题是当它打开新窗口时,驱动程序没有在新窗口上运行,这就是为什么它无法找到输入选项的原因。如何让脚本保持在同一窗口或将其焦点切换到新窗口?谢谢!
1个回答

4

我不知道如何用Python实现,但应该有一个函数可以切换到新窗口。

在Java中,我会这样做:

Set<String> availableWindows = driver.getWindowHandles();
for (String windowHandle : availableWindows) {
    driver.switchTo().window(windowHandle);
    if (getTitle().contains(TITLE_TO_MATCH)){
           driver.manage().window().maximize();
            return;
    }
}

(该函数为 driver.switchTo().window(NameOrHandle)

2
谢谢,这在Python中非常相似。 aw = driver.window_handles driver.switch_to_window(aw[1])如果您只打开了一个窗口,则原始窗口将是aw [0],新窗口将是aw [1]。 如果您打开了更多的窗口,则可以始终将它们打印出来并手动输入它们,或者只需跟踪它们在列表中的位置。再次感谢MrTi。 - seeiespi
@JohnDemetriou 在Selenium中,选项卡确实不是一种有效的操作方式。您无法同时运行它们,并且必须模拟按键以切换到新选项卡。 - Nathan Merrill
是的,但在我的测试中点击链接会打开一个新标签页。 - John Demetriou
1
@JohnDemetriou 噢。为了切换到新标签,我建议模拟按下 Ctrl-W 关闭当前标签页。如果你需要保持两个标签页打开,则模拟按下 Ctrl-Tab。 - Nathan Merrill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接