首页 > 解决方案 > 使用 selenium VBA 截屏

问题描述

我知道如何从网页中截取特定元素的屏幕截图。我尝试了几行代码来捕捉图像,但没有一个能成功捕捉到图像。这是网站的链接https://eservices.moj.gov.kw/sea​​rchPages/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

我只能捕获整个页面,但我只想捕获验证码的元素。

标签: excelvbaselenium

解决方案


这是解决我的问题的工作代码

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

推荐阅读