Selenium WebDriver:如何打开新标签页而不是新窗口

16

我正在使用Selenium WebDriver。每个链接都在新的浏览器窗口中打开。这对我来说不太方便。如何更改设置,让链接在新标签页中打开而不是新窗口?


你使用的编程语言是什么? - Ripon Al Wasim
3个回答

11
现在Selenium具有切换选项卡的功能。下面的代码1:适用于Firefox,代码2:适用于IE和Chrome,使用Robot类可以实现控制,但是控制不会自动移动到当前选项卡,因此我们需要使用窗口句柄方法切换到当前选项卡。以下代码将在运行单个脚本时正常工作,但在运行为套件时,您可能会感到键盘事件的痛苦。为了避免这种情况,我们必须使用Selenium-Java中的用户定义的JavaScript方法,通过使用JavaScript执行程序来进行其他可能性。
我们可以通过识别为每个打开的窗口分配的名称并且该名称将是字母数字字符来在窗口和选项卡之间切换。
    ***Code 1***
    //First tab(default tab)
    driver.navigate().to("http://www.google.com");
    driver.manage().window().maximize();

    //second tab
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
    driver.navigate().to("https://yahoo.com");

    //third tab
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
    driver.navigate().to("http://www.google.com");

    //move to very first tab.
    driver.findElement(By.cssSelector("body"))
            .sendKeys(Keys.CONTROL + "\t");

    // To close the current tab.    
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w");
    **code 2**
    driver.navigate().to("http://www.google.com");
    driver.manage().window().maximize();


    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_T);

    Set<String> handles = driver.getWindowHandles();
    List<String> handlesList = new ArrayList<String>(handles);
    String newTab = handlesList.get(handlesList.size() - 1);

    // switch to new tab
    driver.switchTo().window(newTab); 
    driver.get("http://www.yahoo.com");

7

目前Selenium没有切换标签页的能力。因此,我们强制浏览器在新窗口中打开链接,但由于我们能够切换窗口,我们强制浏览器采用这种方法。这个问题 可能 在以后的版本中得到解决。


今天这仍然适用吗? - Marinos An

0

如果您不在意在选项卡之间切换,这是高概率事件,请在Firefox中使用以下选项:

FirefoxOptions options = new FirefoxOptions().addPreference("browser.link.open_newwindow", 3);
WebDriver driver1 = new new FirefoxDriver(options);

如下面的第一个链接所解释的那样,Selenium希望为用户提供在选项卡之间切换的能力。实现这一目标的解决方法是指示浏览器将选项卡作为窗口打开。然而,这种方法有一些不良副作用,例如:
  • 您必须手动切换到链接刚刚打开的选项卡(并使用技巧找到该选项卡)。
  • 如果关闭当前选项卡,则必须手动切换回原始选项卡。
上面的代码将Firefox的此选项恢复为默认设置。
链接:

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