首页 > 解决方案 > 在 excel VBA 中激活 selenium bot 窗口

问题描述

我正在尝试激活 selenium 机器人的窗口...首先我声明了这一行

Dim mainWin As selenium.Window

然后在 Get 行之后

.Get "https://www.kuwaitcourts.gov.kw/searchPages/searchCases.jsp"

我把这条线设置了窗口

Set mainWin = .Window

在消息框之前,我想激活机器人窗口,所以我使用了这些行

        mainWin.Activate

        MsgBox "Click OK After Entering Captcha", 64

循环开始时没有问题,因为机器人窗口已经处于活动状态,但至于第二个循环,我没有激活机器人窗口任何想法如何克服这一点并在需要时使 selenium 机器人窗口处于活动状态积极的

感谢先进的帮助

标签: excelvbaseleniumweb-scrapingautomation

解决方案


使用javascript返回焦点?因为前面有窗户

bot.ExecuteScript "window.focus();"

暂停输入的方法:

  1. 输入框:

为什么不使用 inputBox(设置为数字类型)来捕获条目?下面是伪代码(假设验证码在需要切换到的 iframe 中。

Dim captchaBox As Object, captcha As Long
.SwitchToFrame (.FindElementById("someId")) '<==some identifier for iframe if present
Set captchaBox = .FindElementByCss("#txtCaptia")
' Accept Number from the user
captcha = Application.InputBox("Please enter 4 digit captcha:", "Captcha", , , , , , 1)
captchaBox.Value = captcha
'.SwitchToDefaultContent   ''<back to main if in iframe and is required even after submit.

  1. DoEvents并循环直到所需的长度:

代码

Dim submitButton As Object
Set submitButton =  .FindElementsByCss("#cmdSubmit")
Do
DoEvents
Loop Until submitButtons.count = 0 

或者

Dim captcha As Object
Set captcha =  .FindElementsByCss("#txtCaptcha")
Do
DoEvents
Loop Until len(captcha.value) = 4

推荐阅读