在chrome上切换选项卡的两个部分(也可能是其他驱动程序)。您首先必须切换驾驶员正在处理的上下文,就我而言,我还必须更改视图,以便将某个选项卡的焦点集中到。
您用来仅发送短切键(Ctrl Tab,Ctrl T等)来管理切换视图,但是最近更改了。
在为此引起我的头痛之后,并没有真正找到任何解决此问题的好答案,我想出了一些工作。
open
您可以通过使用驱动程序将快捷方式发送到页面上的键来在Chrome上创建选项卡。但是,似乎不再起作用了。通过使用一些JavaScript:
,以替代方式打开标签实际上很容易((JavascriptExecutor)webdriver).executeScript("window.open();");
然后,您必须将上下文切换到您刚打开的新窗口。您可以使用webdriver.switchto()方法(有关此的大量文档)
来执行此操作。切换
我面临的另一个挑战是在Chrome更新使您不可能仅使用快捷方式后切换选项卡。我最初尝试使用JavaScript给窗口一个名称:
window.name = 'foo'
,然后在其他选项卡上可以做:
window.open('', 'foo')
它将正确切换选项卡。但是,当您通过控制台发送它时,问题将正常工作,但是无论出于何种原因,它在通过Javascriptexecutor发送时都无法使用。
我发现了一项工作。这有点骇人听闻,但是到目前为止,我还没有看到另一种选择。首先,您想将上下文切换到使用窗口手柄时想要的任何选项卡(同样有很多其他帖子说明了如何做到这一点,因此我不会详细介绍如何获得正确的手柄)这样做:
webdriver.switchTo().window(windowHandle);
这使得现在WebDriver在该选项卡上下文上。然后,要实际切换视图,以便它与您必须执行一些黑客攻击的上下文同步。您要做的是在要切换视图的上下文上打开警报,然后关闭警报。这种情况发生得很快,因此您甚至不会看到警报打开。
((JavascriptExecutor) webdriver()).executeScript("window.alert('Horrible hack to switch tabs')");
webDriver().switchTo().alert().accept();
关闭
关闭实际上非常容易。您要做的就是:
webdriver.close();