我经常使用VBA,但在IE自动化方面,我还是初学者。 我需要创建一个代码来点击我公司特定网站上的“按钮”。 这个按钮打开一个小菜单,我需要选择一些东西(我稍后会讨论)。事实是,按钮没有显示任何ID或名称,它是一个跨度,我无法点击它。 当我按下F12并检查按钮上的元素时,下面是HTML:
<span class="search_for_watchers">
<a href="/watchers/new?project_id=pendencia" data-method="get" data-remote="true">Procurar por outros observadores para adiconar</a>
</span>
我已经尝试过很多通过互联网找到的建议..我已经尝试通过ID,名称,类名等获取元素,但没有成功。 以下是我正在使用的代码:
Sub Automate_IE_Load_Page()
Dim i As Long
Dim URL As String
Dim ie As Object
Dim objElement As Object
Dim objCollection As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
URL = "Examplesite.com"
ie.Navigate URL
Application.StatusBar = URL & " is loading. Please wait..."
Do While ie.READYSTATE = 4: DoEvents: Loop
Do Until ie.READYSTATE = 4: DoEvents: Loop
Application.StatusBar = URL & " Loaded"
botao = ie.Document.getElementsByClassName("search_for_watchers")
botao.Click
End Sub
它没有显示任何错误..它只是没有打开我想要的子菜单,因此没有点击按钮。
谢谢!
答案 0 :(得分:1)
你在这里输入两次无限循环:
Do While ie.READYSTATE = 4: DoEvents: Loop
Do Until ie.READYSTATE = 4: DoEvents: Loop
,例如,它看起来像这样:
Do While ie.READYSTATE = 4
DoEvents
Loop
但是:
代替了VBA中的新行。
确保更改循环,如下所示:
Do While NOT ie.READYSTATE = 4: DoEvents: Loop
答案 1 :(得分:1)
getElementsByClassName是复数;即它代表一个集合。以下代表此类的第一个对象,然后单击。
中的第一个锚标记ie.Document.getElementsByClassName("search_for_watchers")(0).getElementsByTagName("a")(0).click
如果要将对象var分配给元素,然后使用var进行单击,则需要设置var。
答案 2 :(得分:1)
您还可以遍历标记并找到要单击的标记,如下所示:
Set tags = ie.document.getElementsByTagName("a")
For Each tagx In tags
If tagx.innerText = "Procurar por outros observadores para adiconar" Then
tagx.Click
Exit For
End If
Next