如何在表单中单击网页上的单选按钮?我正在尝试编写代码以自动使用Excel VBA填充表单。这是问题陈述:需要单击页面https://moverguide.usps.com/mgo/disclaime r或https://moversguide.usps.com/mgo-m/disclaimer上的三个选项之一,即“个人”,“家庭”和“业务”,出现以下错误:
运行时错误11:NoSuchElementErrorElement无法单击元素
当我使用此示例代码时:
If var = individual or family or business Then
If obj.FindElementById("move-type-var").IsPresent Then
obj.FindElementById("move-type-var").Click
End If
或此错误:
运行时错误7
NoSuchElementError
当我运行以下示例代码时:
if condition satisfied then
obj.FindElementByCss ("css=.row--reskin:nth-child(1) .reskin__card:nth-child(1) > .reskin__card--label)")
End If
我通过从Firefox中提取css目标获得了css参数。基本上,我使用Selenium IDE记录了一个脚本,以查看发生了什么,以便为Excel VBA解决方案利用适当的目标值。
当我手动检查源代码时,IE控制台(F12)中的属性之一被“ aria-checked”设置为“ checked / true”。当我自己单击其中一个选项时,就会发生这种情况。那是我必须在代码中启用的功能吗?
仅免责声明:总体上对Excel VBA很好,但在探索Web表单方面又是一个相当新的方面。
工具:IE11的Selenium Webdriver,MS Excel(办公室365),VBA
它们是标签,不是单选按钮。您可以使用CSS属性=值选择器作为目标;在此将感兴趣的选项字符串连接到for
属性值中。我使用略有不同的起始网址,以避免不必要的步骤。我使用定时循环来确保该元素存在(如果超时不存在该元素,则程序退出)。
Public Sub ClickAnOption()
Dim ie As SHDocVw.InternetExplorer, var As String
'individual, family, business
var = "business"
Set ie = New SHDocVw.InternetExplorer
With ie
.Visible = True
.Navigate2 "https://moversguide.usps.com/mgo-m/move-combined"
Do: DoEvents: Loop While .readyState <> READYSTATE_COMPLETE Or .Busy
Dim t As Date
Const MAX_WAIT_SEC As Long = 5
t = Timer
Do
DoEvents
If Timer - t > MAX_WAIT_SEC Then Exit Sub
Loop While .document.querySelectorAll("[for='move-type-" & var & "']").Length = 0
.document.querySelector("[for='move-type-" & var & "']").Click
Stop
.Quit
End With
End Sub