Internet explorer 在同一窗口、不同选项卡中打开超链接

Internet explorer 在同一窗口、不同选项卡中打开超链接,internet-explorer,selenium-webdriver,Internet Explorer,Selenium Webdriver,我使用以下代码选项在同一窗口和不同选项卡中打开超链接,但每次链接都将在不同窗口中打开 1) String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); driver.findElement(By.linkText(linkText)).sendKeys(selectLinkOpeninNewTab); Actions act = new Actions(driver); act.contextClick(

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

1)

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN);   
driver.findElement(By.linkText(linkText)).sendKeys(selectLinkOpeninNewTab);  
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(); 
2)

3)

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN);   
driver.findElement(By.linkText(linkText)).sendKeys(selectLinkOpeninNewTab);  
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(); 
预期链接应在同一窗口中打开不同的选项卡,但每次都在新窗口中打开


请帮助。

我不推荐这种方法,因为键盘操作肯定不是您想要的,因为它将是违反主要约束的,也就是说,您将无法在中运行测试

我建议采用另一种方法来解决这一问题:

  • 从链接中提取
  • 使用函数via打开新选项卡
  • 使用函数切换到新选项卡
  • 示例代码:

    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
    

    我不推荐这种方法,因为键盘操作肯定不是您想要的,因为它将是违反主要约束的,也就是说,您将无法在中运行测试

    我建议采用另一种方法来解决这一问题:

  • 从链接中提取
  • 使用函数via打开新选项卡
  • 使用函数切换到新选项卡
  • 示例代码:

    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
    

    您可以尝试参考此链接,它可能有助于解决您的问题。参考:您可以尝试参考此链接,它可能有助于解决您的问题。裁判: