为了账号安全,请及时绑定邮箱和手机立即绑定

用Java使用Selenium WebDriver切换选项卡

/ 猿问

用Java使用Selenium WebDriver切换选项卡

Qyouu 2019-07-15 19:18:45

用Java使用Selenium WebDriver切换选项卡

使用Selenium WebDriver和Java。我正在尝试自动化一个功能,在其中我必须打开一个新的选项卡,在那里执行一些操作,然后返回到以前的选项卡(父选项卡)。我用的是开关把手,但不起作用。奇怪的是,这两个选项卡有相同的窗口句柄,因此我无法在选项卡之间切换。

然而,当我尝试使用不同的Firefox窗口时,它可以工作,但是对于选项卡,它不起作用。

请帮助我如何切换标签。或者,在我的情况下,如何在不使用窗口句柄作为窗口句柄的情况下切换制表符是相同的。

(我观察到,当您在同一个窗口中打开不同的选项卡时,窗口句柄保持不变)


查看完整描述

3 回答

?
斯蒂芬大帝
  psdbComponent.clickDocumentLink();
    ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles());
    driver.switchTo().window(tabs2.get(1));
    driver.close();
    driver.switchTo().window(tabs2.get(0));

这个代码对我来说非常有用。试试看。在您想要在新选项卡上做一些事情之前,您总是需要将您的驱动程序切换到新选项卡。


查看完整回答
反对 回复 2019-07-15
?
犯罪嫌疑人X

这是一个简单的解决方案,用于打开一个新选项卡,将焦点更改为它,关闭该选项卡并将焦点返回到旧/原始选项卡:

@Testpublic void testTabs() {
    driver.get("https://business.twitter.com/start-advertising");
    assertStartAdvertising();

    // considering that there is only one tab opened in that point.
    String oldTab = driver.getWindowHandle();
    driver.findElement(By.linkText("Twitter Advertising Blog")).click();
    ArrayList<String> newTab = new ArrayList<String>(driver.getWindowHandles());
    newTab.remove(oldTab);
    // change focus to new tab
    driver.switchTo().window(newTab.get(0));
    assertAdvertisingBlog();

    // Do what you want here, you are in the new tab

    driver.close();
    // change focus back to old tab
    driver.switchTo().window(oldTab);
    assertStartAdvertising();

    // Do what you want here, you are in the old tab}private void assertStartAdvertising() {
    assertEquals("Start Advertising | Twitter for Business", driver.getTitle());}private void assertAdvertisingBlog() {
    assertEquals("Twitter Advertising", driver.getTitle());}


查看完整回答
反对 回复 2019-07-15
?
www说

不同的web驱动程序如何处理不同的窗口和如何处理不同的选项卡。

案例1:
如果有多个窗口,那么下面的代码可以帮助您:

//Get the current window handleString windowHandle = driver.getWindowHandle();
//Get the list of window handlesArrayList tabs = new ArrayList (driver.getWindowHandles());
System.out.println(tabs.size());
//Use the list of window handles to switch between windowsdriver.switchTo().window(tabs.get(0));
//Switch back to original windowdriver.switchTo().window(mainWindowHandle);


案例2:
如果同一个窗口中有多个选项卡,那么只有一个窗口句柄。因此,窗口句柄之间的切换使控件保持在相同的选项卡中。
在本例中,使用Ctrl+\t(Ctrl+Tab)在制表符之间切换更有用。

//Open a new tab using Ctrl + tdriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
//Switch between tabs using Ctrl + \tdriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");

详细的示例代码可以在这里找到:
http:/Design-interviews.blogpot.com/2014/11/开关-选项卡-在同一浏览器中切换-window.html


查看完整回答
反对 回复 2019-07-15

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信