使用WebDriver在新打开的标签页中单击链接

3

请问有谁能在这种情况下帮助我:

情境是:有一个网页,我只打开我指定的所有链接以新标签页形式打开。现在我想要点击新打开的标签页中的某个链接。尝试了以下方法,但它只会在主/第一个标签页中点击该链接,而不是在新标签页中。

new Actions(driver).sendKeys(Keys.CONTROL).sendKeys(Keys.NUMPAD1).perform();
driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL, Keys.TAB);
List<WebElement> links=driver.findElements(By.xpath("//a[contains(@href,'http')]"));
links.get(0).click();

有人可以告诉我如何将 Web Driver 控制/焦点带到新打开的选项卡并单击该选项卡中的链接吗? - Srikanth Nakka
1个回答

7
您需要使用.switchTo(windowHandle);命令来访问您的第二个标签页。
在打开第二个标签页之前,请获取已打开标签页的windowHandle:
String mainWindow = driver.getWindowHandle();

接下来执行打开第二个标签页的操作。现在您需要知道第二个标签页的句柄并将控制权切换到它:

Set<String> handles = driver.getWindowHandles();  
for (String handle : handles) {
    if (!handle.equals(mainWindow)) {
          driver.switchTo().window(handle);
          break;
    }
}

您在第二个选项卡中的操作现在将发生在该第二个窗口中。当您完成操作并需要再次与第一个选项卡进行交互时: driver.switchTo().defaultContent();


我已经在if语句中更正了driver.switchTo行。它应该是driver.switchTo().window(handle);而不是driver.switchTo(handle);。 - Ripon Al Wasim
在我的情况下,使用 driver.switchTo().defaultContent(); 没有起作用。这就是为什么我使用 driver.switchTo().window(mainWindow); 去到父(第一)窗口的原因。 - Ripon Al Wasim
如何关闭第二个选项卡/窗口? - Ripon Al Wasim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接