在同一窗口中的不同选项卡中打开超链接

时间:2019-07-02 14:03:26

标签: internet-explorer selenium-webdriver

我使用以下代码选项在同一窗口和不同选项卡中打开超链接,但是每次链接将在不同窗口中打开。

1)

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN);   
driver.findElement(By.linkText(linkText)).sendKeys(selectLinkOpeninNewTab);  

2)

Actions act = new Actions(driver);  
act.moveToElement(element).doubleClick(element))).build().perform();  

3)

Actions act = new Actions(driver);
act.contextClick(driver.findElement(By.xpath(element)))
    .sendKeys(Keys.ARROW_DOWN)
    .sendKeys(Keys.ARROW_DOWN)
    .sendKeys(Keys.RETURN)
    .build()
    .perform(); 

预期链接应在同一窗口的不同选项卡中打开,但每次在新窗口中打开。

请帮助。

1 个答案:

答案 0 :(得分:0)

我不建议您使用此方法,因为绝对不是您想要的键盘操作,因为它将成为违反Parallel Testing Best Practices的主要约束,因此您将无法在Selenium Grid中运行测试

我建议采用另一种机智的方法:

  1. 从链接中提取href attribute
  2. 通过Window.open()使用driver.executeScript() function功能打开一个新标签页
  3. 使用driver.switchTo().window()函数切换到新标签页

示例代码:

WebElement link = driver.findElement(By.linkText(linkText));
String href = link.getAttribute("href");
driver.executeScript("window.open('" + href + "');");
driver.switchTo().window(driver.getWindowHandles().stream().reduce((f, s) -> s).orElse(null));
System.out.println(driver.getTitle()); // at this point you should see the new page title