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

如何使用Selenium下载指定URL原图?解决截图存为全屏问题

解决Selenium ChromeDriver截图图片实际尺寸的问题

嘿,我懂你现在的困扰——用Selenium打开图片URL后,GetScreenshot()截出来的是整个浏览器窗口的图,根本不是图片本身的真实尺寸对吧?别着急,咱们有两种靠谱的方法来搞定这个事儿:

方法一:直接截取图片元素的截图(推荐)

Selenium的IWebElement对象本身就支持截图功能,咱们可以直接定位到页面里的图片元素,然后只截取这个元素的区域,这样得到的就是图片的实际尺寸啦。

完整VB.NET代码示例:

Imports OpenQA.Selenium
Imports OpenQA.Selenium.Chrome
Imports OpenQA.Selenium.Support.UI

' 初始化ChromeDriver相关配置
Dim service As ChromeDriverService = ChromeDriverService.CreateDefaultService()
Dim opt As ChromeOptions = New ChromeOptions()
' 可选:添加一些浏览器参数优化体验,比如禁用不必要的弹窗
opt.AddArgument("--disable-popup-blocking")

Dim pub As New ChromeDriver(service, opt)
pub.Navigate.GoToUrl("https://cdn01.muaban.net/mogi/thumb-detail/201810/01/951/5c055e8b0f88442a81ac5dfadc235e97.jpg")

' 等待图片元素加载完成(避免还没加载完就操作)
Dim wait As New WebDriverWait(pub, TimeSpan.FromSeconds(10))
Dim imgElement As IWebElement = wait.Until(ExpectedConditions.ElementIsVisible(By.TagName("img")))

' 直接截取图片元素的截图,这就是图片的真实尺寸
Dim imgScreenshot As Screenshot = imgElement.GetScreenshot()
imgScreenshot.SaveAsFile("image.jpg")

' 记得关闭浏览器释放资源
pub.Quit()

方法二:调整浏览器窗口为图片尺寸后截图

如果你的Selenium版本不支持元素截图(不过现在大部分新版本都支持了),可以先获取图片的实际宽高,然后把浏览器窗口调整到对应尺寸,再进行全屏截图。

代码示例:

Imports OpenQA.Selenium
Imports OpenQA.Selenium.Chrome
Imports OpenQA.Selenium.Support.UI
Imports System.Drawing

Dim service As ChromeDriverService = ChromeDriverService.CreateDefaultService()
Dim opt As ChromeOptions = New ChromeOptions()

Dim pub As New ChromeDriver(service, opt)
pub.Navigate.GoToUrl("https://cdn01.muaban.net/mogi/thumb-detail/201810/01/951/5c055e8b0f88442a81ac5dfadc235e97.jpg")

' 等待图片加载并获取元素
Dim wait As New WebDriverWait(pub, TimeSpan.FromSeconds(10))
Dim imgElement As IWebElement = wait.Until(ExpectedConditions.ElementIsVisible(By.TagName("img")))

' 获取图片的实际宽高
Dim imgWidth As Integer = imgElement.Size.Width
Dim imgHeight As Integer = imgElement.Size.Height

' 调整浏览器窗口大小为图片尺寸(可以加个小偏移,避免窗口边框截断图片)
pub.Manage().Window.Size = New Size(imgWidth + 10, imgHeight + 10)

' 现在截图就是图片的实际尺寸了
pub.GetScreenshot().SaveAsFile("image.jpg")

pub.Quit()

注意事项:

  • 一定要加等待逻辑:图片加载需要时间,直接操作可能会获取到错误的尺寸或者空元素,用WebDriverWait来等待元素可见是很有必要的。
  • 如果遇到图片加载慢的情况,可以适当延长等待时间(比如把10秒改成15秒)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:20:01