excel - 使用 selenium VBA 截屏
问题描述
我知道如何从网页中截取特定元素的屏幕截图。我尝试了几行代码来捕捉图像,但没有一个能成功捕捉到图像。这是网站的链接https://eservices.moj.gov.kw/searchPages/searchCases.jsp 这是我的代码并尝试这部分
.Window.Maximize
.Get sURL
.Wait 2000
'.FindElementById("txtCaseNo").SendKeys "192883660"
'DecryptCaptcha
Dim obj As Object
'.FindElementByXPath("//*[@id='viewPane']/div").ScrollIntoView True
.FindElementById("viewPane").ScrollIntoView True
.Wait 2000
'.FindElementByXPath("//div/img[@src='/captcha/imgCaptcha.jsp']").ScrollIntoView True
'.FindElementByXPath("//div/img[@src='/captcha/imgCaptcha.jsp']").ScrollIntoView True
'Set obj = .FindElementByXPath("//div/img[@src='/captcha/imgCaptcha.jsp']").TakeScreenshot(3000)
Set obj = .TakeScreenshot(3000)
obj.SaveAs (ThisWorkbook.Path + "\Number.png")
.Wait 2000
我只能捕获整个页面,但我只想捕获验证码的元素。
解决方案
这是解决我的问题的工作代码
Private bot As Selenium.ChromeDriver
Sub Test()
Dim element As Object
Set bot = New Selenium.ChromeDriver
With bot
.Start
.Get "https://eservices.moj.gov.kw/searchPages/searchCases.jsp"
Set element = .FindElementByXPath("//*[@id='frmCaseNo']/div[2]/img")
.ExecuteScript "arguments[0].scrollIntoView();", element
element.TakeScreenshot(3000).SaveAs (ThisWorkbook.Path + "\Number.png")
End With
End Sub
推荐阅读
- symfony - Symfony:动态切换存储库的数据库连接
- python - 如果有任何坐标落在彼此之间的特定距离内,我如何确定哪些坐标?
- sql - 使用虚拟 FALSE/TRUE 语句的 SQL 性能
- swift - 无法从 Firebase 检索 Int
- javascript - React:在浏览器背面/页面之间持久化状态或数据
- powerbi - 无法从 SQL Server 加载 PowerBi 中的历史数据
- angular - 根据条件对表单进行角度所需的验证
- ssms - 在 ssms SQLCMD 中运行 .txt 文件
- django - 更新 django 字段中的状态 - status CHOICES
- postgresql - 执行选择查询时出现共享内存不足错误