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

如何用Selenium和Java点击新标签页PDF中的下载图标

使用Selenium Java操作PDF页面的下载图标

1. 切换到PDF所在的新标签页

点击PDF链接后会打开新标签页,先切换到目标标签页:

// 获取所有窗口句柄并转为列表
Set<String> windowHandles = driver.getWindowHandles();
List<String> handlesList = new ArrayList<>(windowHandles);
// 切换到最后一个打开的标签页(即PDF页面)
driver.switchTo().window(handlesList.get(handlesList.size() - 1));

2. 定位并点击下载图标

不同浏览器的PDF内置控件选择器有差异,以下是主流浏览器的实现方式:

Chrome浏览器

// 方式1:通过title属性定位
WebElement downloadBtn = driver.findElement(By.cssSelector("button[title='下载']"));
// 方式2:通过ID定位(部分版本适用)
// WebElement downloadBtn = driver.findElement(By.id("download"));
downloadBtn.click();

Firefox浏览器

WebElement downloadBtn = driver.findElement(By.cssSelector(".toolbarButton.download"));
downloadBtn.click();

3. 优化:添加显式等待避免加载延迟

如果PDF页面加载较慢,建议用显式等待确保元素可点击:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement downloadBtn = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("button[title='下载']")));
downloadBtn.click();

4. 自动处理下载弹窗(可选)

若浏览器弹出下载确认框,可通过设置浏览器偏好自动完成下载:

Chrome配置示例

ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<>();
// 设置下载路径
prefs.put("download.default_directory", "D:\\your_download_path");
// 关闭下载提示弹窗
prefs.put("download.prompt_for_download", false);
options.setExperimentalOption("prefs", prefs);
WebDriver driver = new ChromeDriver(options);

Firefox配置示例

FirefoxOptions options = new FirefoxOptions();
options.setPreference("browser.download.folderList", 2); // 自定义下载路径
options.setPreference("browser.download.dir", "D:\\your_download_path");
// 指定PDF类型自动保存,不弹窗
options.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
WebDriver driver = new FirefoxDriver(options);

内容的提问来源于stack exchange,提问作者Divya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:45:03