You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Selenium如何获取新打开标签页的URL?当前仅能拿到旧标签页地址

问题原因

你获取到旧标签URL的核心原因是:点击PDF打开新标签后,WebDriver的上下文仍然停留在原标签页,没有切换到新打开的标签页,此时调用driver.getCurrentUrl()自然只能拿到原标签的地址。

解决步骤
  • 点击PDF元素前,先保存原标签页的窗口句柄,用于后续切换或校验
  • 点击后使用显式等待,等待新标签页完成加载,避免因页面未渲染完成导致获取句柄失败
  • 遍历所有打开的窗口句柄,找到新打开的标签页对应的句柄,将WebDriver切换到该句柄
  • 此时再调用driver.getCurrentUrl()即可获取PDF标签页的URL
  • 操作完成后关闭新标签页,切回原标签页即可
修正后代码示例
package TestCases;

public class Learn_TC3 extends SuperTestScript
{
    @Test
    public void  LoginTC1() throws Exception
    {
        //all the required data
        String USRID = ExcelLibrary.readData("Sheet1", 0, 0);
        String PSW = ExcelLibrary.readData("Sheet1", 0, 1);
                
        //create page objects
        LearnPage Lp = new LearnPage();
        Tabswitch Ts = new Tabswitch();
                
        //invoke the methods
        Lp.ClickonMaterialsButton();
        // 保存原标签页句柄
        String originalTab = driver.getWindowHandle();
        // 替换固定等待为显式等待更稳定,也可保留原有Thread.sleep
        new WebDriverWait(driver, Duration.ofSeconds(3)).until(ExpectedConditions.elementToBeClickable(Lp.getPdf1Element()));
        Lp.ClickonPDF1();//点击后PDF在新标签打开
        
        // 等待新标签页加载完成
        new WebDriverWait(driver, Duration.ofSeconds(10)).until(d -> d.getWindowHandles().size() > 1);
        
        // 切换到新标签页
        for (String tabHandle : driver.getWindowHandles()) {
            if (!tabHandle.equals(originalTab)) {
                driver.switchTo().window(tabHandle);
                break;
            }
        }
        
        // 此时获取的就是新标签页的URL
        String currentUrl = driver.getCurrentUrl();
        ExcelLibrary.writeData("Sheet1", 0, 4, currentUrl);
        
        // 关闭新标签页并切回原标签,也可调用你封装的Ts.switchToPreviousTabAndClose()
        driver.close();
        driver.switchTo().window(originalTab);
    }
}

如果你已经在Tabswitch类中封装了新标签切换逻辑,只需要调整执行顺序,在调用getCurrentUrl()之前完成新标签切换即可。

内容的提问来源于stack exchange,提问作者Saikumar Reddy Yelampalli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:24:01