0

我正在开发一个项目,其中包括单击一个链接并且应该使用 webdriver 在新选项卡中打开,问题是

  1. 假定的链接包含在 iFrame 中,因此shift+click不起作用

    private void openInNewTabAndSwitch(WebElement linkElement) {
    // logic of opening in new tab goes here...
    Actions newTab = new Actions(driver);
    newTab.keyDown(Keys.SHIFT).click(linkElement).keyUp(Keys.SHIFT).build().perform();
    Set<String> windowSet = driver.getWindowHandles();
    driver.switchTo().window((String) windowSet.toArray()[1]); }
    
  2. 我找不到该href属性,因为某些 javascript 函数正在使用某些方法打开它onClick()

<a onclick="javascript:LinkOccam (this, 'opportunity');">Mednomics Proposition</a>

问题:- 它只是在同一选项卡中打开所需的页面。

现在,我找不到与此相关的任何内容,请帮助..!

其他相关信息 我正在使用 Windows 7、Java 8、ChromeDriver

4

1 回答 1

0

当您单击打开新选项卡的WebElement时,您无需担心WebElement是在顶级浏览上下文中还是在 iFrame中。此外,在切换TAB时,会引发WebDriverWait并相应地切换。为此,您可以使用以下代码块:

private void openInNewTabAndSwitch(WebElement linkElement) 
{
    String parentTab = driver.getWindowHandle();
    Actions newTab = new Actions(driver);
    newTab.keyDown(Keys.CONTROL).click(linkElement).keyUp(Keys.CONTROL).build().perform();
    WebDriverWait wait = new WebDriverWait(driver,5);
    wait.until(ExpectedConditions.numberOfWindowsToBe(2));
    Set<String> windowSet = driver.getWindowHandles();
    for(String tab:windowSet)
    {
        if(!parentTab.equalsIgnoreCase(tab))
        {
            driver.switchTo().window(tab);
            //do your work in the newly opened TAB
        }
    }
}
于 2018-03-27T11:10:54.307 回答