一次硒多个标签

Tre*_*nan 19 selenium tabs automated-tests multiple-instances

我正在与Selenium合作,我想知道是否可以同时使用多个TABS?我不想使用多个浏览器实例(即2个双关语的双关语).如果不可能,那么如何在顺序运行的各个选项卡之间进行切换?

谢谢!

Nat*_*ill 32

如果有一个链接打开一个新窗口/选项卡,那么您可以使用 driver.switchTo().window();

但是,如果你想在多个窗口上运行某些东西,那么我建议有多个webdriver实例.它更易于管理,并且受到支持(打开新选项卡/窗口时有一些变通方法,例如按下打开新窗口的热键,但不支持它们).

如果您希望多个线程都在同一个驱动程序实例上运行,但是不同的选项卡,这是不可能的.


小智 10

可以在不使用多个浏览器实例的情况下在各个选项卡之间切换.
Web驱动程序处理不同窗口以及它如何处理不同选项卡有所不同.

案例1:
如果有多个窗口,则以下代码可以提供帮助:

//Get the current window handle
String windowHandle = driver.getWindowHandle();

//Get the list of window handles
ArrayList tabs = new ArrayList (driver.getWindowHandles());
System.out.println(tabs.size());
//Use the list of window handles to switch between windows
driver.switchTo().window(tabs.get(0));

//Switch back to original window
driver.switchTo().window(mainWindowHandle);
Run Code Online (Sandbox Code Playgroud)


情况2:
如果同一窗口中有多个选项卡,则只有一个窗口句柄.因此,在窗口句柄之间切换可将控件保持在同一选项卡中.
在这种情况下,使用Ctrl +\t(Ctrl + Tab)在标签之间切换更有用.

//Open a new tab using Ctrl + t
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
//Switch between tabs using Ctrl + \t
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");
Run Code Online (Sandbox Code Playgroud)

详细的示例代码可以在这里找到:http:
//design-interviews.blogspot.com/2014/11/switching-between-tabs-in-same-browser-window.html