Перед запуском кода необходимо сначала выполнить несколько шагов
** Установить Tesseract-OCR по ссылке: https://github.com/UB-Mannheim/tesseract/wiki Добавить путь tesseract к переменным среды Чтобы убедиться в правильности установки все в порядке, проверьте версию В PowerShell
tesseract --version
** Установите ImageMagick по ссылке: https://www.imagemagick.org/script/download.php
Добавьте путь ImageMagick к переменным среды в командной строке запустите эти строки
magick logo: logo.gif
magick identify logo.gif
magick logo.gif win:
** Откройте Windows PowerShell ISE, затем создайте новый файл и поместите эти строки (измените имя пользователя)
cd C:\Users\YOURUSERNAME\Desktop
magick convert Captcha.png -resize 400x100 -density 300 -quality 100 CaptchaNew.png
magick convert CaptchaNew.png -negate -lat 300x160+30% -negate CaptchaNew.png
tesseract.exe CaptchaNew.png OutCaptcha -l eng
Наконец сохраните файл на рабочем столе с именем «GetCaptcha» и расширением будет ps1.
** PowerShell должен быть настроен для запуска сценариев из него, поэтому в PowerShell выполните эти команды
Get-ExecutionPolicy
Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy ByPass -Force
Код
Public Sub Test_IECsite()
Dim e, bot As WebDriver, tbl As Selenium.TableElement, dlg As alert, obj As Object, lr As Long
Set bot = New WebDriver
With bot
.Start "Chrome"
For Each e In Array("0915011433", "6315000983")
.Window.Maximize
backP:
.Get "http://dgftebrc.nic.in:8090/MiscQry/Pan_index.jsp"
Set obj = .FindElementById("capt").TakeScreenshot(3000)
obj.SaveAs (ThisWorkbook.Path + "\Captcha.png")
.FindElementById("panNo").SendKeys e
.FindElementById("captVal").SendKeys GetCaptcha
.FindElementById("submit").Click
Set dlg = .SwitchToAlert(Raise:=False)
If Not dlg Is Nothing Then dlg.accept: GoTo backP
Set tbl = .FindElementByXPath("/html/body/center/table[2]").AsTable
With ThisWorkbook.Sheets("Sheet1")
lr = .Cells(Rows.Count, 1).End(xlUp).Row
If lr > 1 Then lr = lr + 2
With .Range("A" & lr).Resize(, 2)
.HorizontalAlignment = xlCenterAcrossSelection
.Font.Color = vbBlue
End With
With .Range("A" & lr + 1).Resize(, 7)
.Font.Bold = True
.Font.Color = vbRed
End With
tbl.ToExcel .Range("A" & lr)
End With
Next e
Stop
End With
End Sub
Function GetCaptcha() As String
Dim wshShell As Object, sOutput As String, strCommand As String
sOutput = ThisWorkbook.Path & "\OutCaptcha.txt"
strCommand = "Powershell.exe -File ""C:\Users\" & Application.UserName & "\Desktop\GetCaptcha.ps1"""
Set wshShell = CreateObject("WScript.Shell")
wshShell.Run strCommand, 0, True
GetCaptcha = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(sOutput).ReadAll, vbLf)(0)
End Function