有没有办法在显示HTML的网页上输入值?

时间:2019-07-19 12:52:33

标签: vba webautomation

我正在尝试使用网络自动化输入值。我可以在屏幕截图中使用HTML输入值吗?

Set objinputs = objIE.document.getElementsByTagName("input")

For Each ele In objinputs
    If ele.Class Like "css-9hvios-Input-textInputBaseClass e1tcuc7s0" Then
        ele.Value = ws.Range("A1").Value
    End If
Next

这是HTML的片段 enter image description here

1 个答案:

答案 0 :(得分:0)

您的代码:

您想要className而不是class。您可以使用Like,但是成功之后可能想要Exit For

For Each ele In objinputs
    If ele.ClassName Like "css-9hvios-Input-textInputBaseClass e1tcuc7s0" Then
        ele.Value = ws.Range("A1").Value
        Exit For
    End If
Next

替代:

假设您想将第一个input元素与该类名称进行匹配,如果您使用CSS class selector,则效率更高,更快捷:

objIE.querySelector("input.css-9hvios-Input-textInputBaseClass.e1tcuc7s0").value = ws.Range("A1").Value

无需循环。点“。”是类选择器,后跟类名称。


精炼

您可以通过删除开头的tag/type selectorinput)来缩短

objIE.querySelector(".css-9hvios-Input-textInputBaseClass.e1tcuc7s0").value =ws.Range("A1").Value

您可以通过删除一个复合类名来进一步缩短(原始类名中的空格表示存在多个类。在css中,然后通过用点代替空格来加入类。

objIE.querySelector(".css-9hvios-Input-textInputBaseClass").value =ws.Range("A1").Value

但是类名称看起来很动态,因此您可能需要位置匹配。