【问题标题】:How to click a link within an iFrame which opens a new tab and switch to it如何单击 iFrame 中的链接以打开新选项卡并切换到该选项卡
【发布时间】:2018-03-27 10:18:42
【问题描述】:

我正在做一个项目,其中包括单击一个链接,并且应该使用 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() 打开它

&lt;a onclick="javascript:LinkOccam (this, 'opportunity');"&gt;Mednomics Proposition&lt;/a&gt;

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

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

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

【问题讨论】:

  • shift+click 代码试验和相关 HTML 请。
  • WebElement.click(); 有什么问题?
  • 那个没有在新标签打开,我需要在新标签打开
  • 尝试Ctrl + Click 获取新标签
  • 抱歉,ctrl+click 不起作用

标签: java selenium selenium-webdriver selenium-chromedriver webdriverwait


【解决方案1】:

当您点击一个 WebElement 并打开一个 New TAB 时,您无需担心 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
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 2019-09-02
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    相关资源
    最近更新 更多