【问题标题】:Opening a link in new window在新窗口中打开链接
【发布时间】:2015-02-09 02:09:13
【问题描述】:

我需要使用 Selenium 在新窗口中打开一个链接。我找到了以下 2 个(假设我们是 WebElement 并且我已经找到了它并且 myWait 只执行了 x 毫秒的等待):

1)

Actions act = new Actions(driver);
act.contextClick(we).perform();
myWait(1000); // allow the menu to come up
act.sendKeys(which).perform();

2)

we.sendKeys(Keys.CONTROL + "t");

在#1 中,我看到菜单出现了,但是sendKeys 不起作用(哦,顺便说一下,sendKeys 中的“which”是“t”)。在 #2 中它只是忽略它。

#1 中的菜单是否已经出现在新窗口中?我必须driver.switchTo()吗?如果不是,我做错了什么?

另外,还有其他方法吗? we 是 <a href=blah> 形式的元素,并且可以正常点击打开。

【问题讨论】:

    标签: java selenium


    【解决方案1】:

    您可以尝试以下代码在新窗口中打开链接:

    Actions newTab= new Actions(driver);
    WebElement link = driver.findElement(By.xpath("//xpath of the element"));
    
    //Opening the link in new window
    newTab.contextClick(link).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
    

    注意:在你打开链接一个新窗口后,要控制它,你需要得到这个子窗口的句柄,使用driver.switchTo.window("childwindowhandle")切换到它 并采取进一步措施。并且,之后您可以关闭它并切换回父窗口(原始窗口)并在此处执行操作(确保在新窗口中打开链接之前获取父窗口句柄,以便切换回更容易)

    【讨论】:

    • 获取 childwindowhandle 有点棘手,对吧?我假设只有 2 个窗口打开。我通过一个窗口句柄循环。如果手柄与我当前的手柄不匹配,我认为它是孩子。这有意义吗?
    • 是的!这就是切换到子窗口的方式。
    猜你喜欢
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2014-09-03
    • 2020-12-01
    • 2011-07-07
    • 2012-07-27
    相关资源
    最近更新 更多