首页 > 解决方案 > 在同一窗口,不同选项卡中打开超链接

问题描述

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

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(); 

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

请帮忙。

标签: internet-explorerselenium-webdriver

解决方案


我不推荐这种方法,因为键盘操作绝对不是您想要的,因为它将是违反并行测试最佳实践的主要约束,也就是说您将无法在Selenium Grid中运行您的测试

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

  1. 从链接中提取href属性
  2. 通过函数使用Window.open()函数打开一个新选项卡driver.executeScript()
  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

推荐阅读