Excel VBA w/selenium包装器:在web表单字段中输入数据
使用selenium包装器,如何将所选数据输入到下面的输入值占位符中?这是用于网页抓取的目的。网站代码如下:Excel VBA w/selenium包装器:在web表单字段中输入数据,vba,excel,selenium,Vba,Excel,Selenium,使用selenium包装器,如何将所选数据输入到下面的输入值占位符中?这是用于网页抓取的目的。网站代码如下: <input value="" placeholder="Enter Text" autocomplete="off" aria- label="Enter Text: name and age required" data- reactid=".9odxj7ein7k.0.0.9.0.0.$body.2.9.0.0.9.0.0.0.9.0"> 所以有几件事,根据定义,El
<input value="" placeholder="Enter Text" autocomplete="off" aria-
label="Enter Text: name and age required" data-
reactid=".9odxj7ein7k.0.0.9.0.0.$body.2.9.0.0.9.0.0.0.9.0">
所以有几件事,根据定义,ElementID是唯一的,因此
getElementsByID
应该是getElementByID
。另外,input
是标记名,id由属性id=“SomeID”
标记。我认为您想要的是选择页面上的所有输入标记名,然后找到唯一的属性。看起来您可以使用标签
或reactid
@ryanwildry感谢您的洞察力。我做了一些调整,我可以在没有selenium包装(使用IE)的情况下让更新的代码正常工作。我使用包装器的唯一原因是,当使用IE时,网页不会完全加载——因此我有两条路径:1)让IE页面完全加载(我有循环,直到objIE.ReadyState=4
,但是这个页面内容太多);或者2)让selenium包装器代码正常工作(错误似乎出现在设置_input_elements=bot.Document.GetElementsByTagName(“input”)
注意此代码非常适合非selenium包装器解决方案)。谢谢。有几件事,根据定义,ElementID是唯一的,因此getElementsByID
应该是getElementByID
。另外,input
是标记名,id由属性id=“SomeID”
标记。我认为您想要的是选择页面上的所有输入标记名,然后找到唯一的属性。看起来您可以使用标签
或reactid
@ryanwildry感谢您的洞察力。我做了一些调整,我可以在没有selenium包装(使用IE)的情况下让更新的代码正常工作。我使用包装器的唯一原因是,当使用IE时,网页不会完全加载——因此我有两条路径:1)让IE页面完全加载(我有循环,直到objIE.ReadyState=4
,但是这个页面内容太多);或者2)让selenium包装器代码正常工作(错误似乎出现在设置_input_elements=bot.Document.GetElementsByTagName(“input”)
注意此代码非常适合非selenium包装器解决方案)。非常感谢。
Private Sub CommandButton3_Click()
Dim bot As New WebDriver
bot.Start "chrome", "url”
Set the_input_elements = bot.Document.getElementsByID("input value")
For Each input_element In the_input_elements
If input_element.getAttribute("input value") = "" Then
input_element.Value = "Text I would like to enter to the form"
Exit For
End If
Next input_element
End Sub