【发布时间】:2021-12-16 22:01:43
【问题描述】:
我正在尝试使用 Excel VBA 单击网页上的按钮。我已经加载了页面,登录了,现在我需要点击一个按钮。问题是按钮没有 id 或名称。它只有 class 属性,每次我登录时都会略有变化。到目前为止,这是我的 VBA 代码:
Sub test()
Dim oIE As Object
Dim oHDoc As HTMLDocument
Set oIE = CreateObject("InternetExplorer.Application")
With oIE
.Visible = True
.navigate sSiteName
End With
While oIE.readyState <> 4
DoEvents
Wend
Set oHDoc = oIE.document
With oHDoc
.getElementById("Ecom_User_ID").Value = "xxx"
.getElementById("Ecom_Password").Value = "xxx"
.getElementById("Ecom_Button_Login").Click
End With
End Sub
下面是我要点击的按钮的 HTML 代码
<generic-button class="user-info__btn ttu _ngcontent-jlj-3 _nghost-jlj-9" cssclass="btn-inverse">
<button type="button" class="_ngcontent-jlj-9 btn-inverse btn btn-primary" tabindex="0">
<p class="_ngcontent-jlj-9">New message</p>
</button>
</generic-button>
在另一个登录时,我会得到:
<generic-button class="user-info__btn ttu _ngcontent-vnl-3 _nghost-vnl-9" cssclass="btn-inverse">
<button type="button" class="_ngcontent-vnl-9 btn-inverse btn btn-primary" tabindex="0">
<p class="_ngcontent-vnl-9">New message</p>
</button>
</generic-button>
有没有办法点击按钮?任何帮助是极大的赞赏! :)
【问题讨论】:
-
试试
.getElementsByClassName("_ngcontent-jlj-9")(0).Click -
这不起作用,因为每次我登录网站时,“jlj”都可能是任何东西。然而,这给了我一个使用
.getElementsByTagName("button")(3).Click的想法,因为我试图点击的按钮是使用网页上的按钮标签的第四个元素,它似乎工作! -
知道了,如果它是动态生成的,如果可能的话,尝试通过寻找具有 ID 的父元素来缩小搜索空间。