java - 使用 WebDriver 单击新打开的选项卡中的链接

标签 java selenium webdriver selenium-webdriver

有人可以在这种情况下帮助我吗:

场景是:有一个网页,我只在新标签页中打开所有指定的链接。现在我试图点击新打开的标签中的任何一个链接。在下面尝试过,但它只在主/第一个选项卡中单击该链接,而不是在新选项卡中单击该链接。

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();

最佳答案

您需要使用 .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();

关于java - 使用 WebDriver 单击新打开的选项卡中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18526868/

相关文章:

java - 在哪里可以找到使用 MPJ Express 库的一些示例?

python - 我如何等待元素可见然后在 Python Selenium Webdriver 中被单击?

java - 当测试运行时并行观察是否存在特定元素

java - 如何为我在 java 上编写的 Selenium 测试增加 travis-ci 中的超时?

java - 它们是异常而不是 Java 中的编译错误。为什么?

java - 我如何根据运行的 jar 的结果让我的 ant 任务通过或失败?

java - Selenium WebDriver : How to wait for iFrames to load completely?

java - 如何定位列表元素(Selenium)?

java - ChromeDriver 找不到要单击的元素

java - 禁用备份时,Hazelcast 是否将 MultiMap 值存储在本地实例中?