Chrome上有两个部分切换标签(也可能是其他驱动程序)。 首先必须切换驱动程序正在处理的上下文,在我的情况下,我还必须更改视图,以便关注某个选项卡。
您可以只发送快捷键(ctrl + tab,ctrl + t等)来管理切换视图,但最近更改了。
在让我头疼之后,并没有找到任何好的答案来解决这个问题,我提出了一些解决方法。
答案 0 :(得分:0)
<强>打开强>
您可以使用驱动程序通过向页面发送快捷方式来创建Chrome选项卡。但是,它似乎不再起作用了。通过使用一些Javascript:
,以另一种方式打开标签实际上相当容易https://www.onenote.com/api/v1.0/me/notes/pages?$expand=parentNotebook&$filter=parentNotebook/id%20eq%20'{$YOUR_NOTEBOOK_ID_HERE}'&$orderby=createdTime
然后,您必须将上下文切换到刚刚打开的新窗口。你可以使用webdriver.switchTo()方法(大量的文档)
<强>开关强>
我遇到的另一个挑战是在Chrome更新后切换标签使得无法使用快捷方式。我最初尝试使用Javascript为窗口命名:
((JavascriptExecutor)webdriver).executeScript("window.open();");
然后在另一个标签上你可以做到:
window.name = 'foo'
它会正确切换标签。然而,当你通过控制台发送它时它会正常工作的问题,但无论出于什么原因,当它通过JavascriptExecutor发送它时它将无法工作。
然而,我找到了一个工作。这有点像hacky,但我现在还没有看到替代方案。首先,您希望使用窗口句柄将上下文切换到您想要使用的任何选项卡(还有很多其他帖子解释了如何执行此操作,因此我不会详细说明如何获取正确的句柄)这样做:window.open('', 'foo')
这使得现在webdriver位于标签上下文中。然后实际切换视图,使其与上下文同步,你必须做一些黑客攻击。您要做的是在要切换视图的上下文中打开警报,然后关闭警报。这种情况发生得相当快,因此您甚至不会看到警报打开。
webdriver.switchTo().window(windowHandle);
<强>合强>
关闭实际上非常容易。你所做的就是:
((JavascriptExecutor) webdriver()).executeScript("window.alert('Horrible hack to switch tabs')");
webDriver().switchTo().alert().accept();