我正在寻找帮助,以完成此代码,以便单击网页上的“开始”按钮。
这是网站上的代码
<span class="button-g">
<a href="class=" autoCompleteGoButton" Style="margin:0 0 0 10px;"onclick="javascript:cfMainFormSubmit();">go</a>
</span>
这是我一直在尝试使用的代码。
'click the 'go' button
Set objInputs = IE.document.getElementsByTagName("a")
For Each ele In objInputs
If ele.Class Like "autoCompleteGoButton" Then
ele.Click
End If
Next
以下是我正在使用的代码,这可能会有所帮助。
'start a new subroutine called SearchBot
Sub SearchBot()
'dimension (declare or set aside memory for) our variables
Dim objIE As InternetExplorer 'special object variable representing the IE browser
Dim aEle As HTMLLinkElement 'special object variable for an <a> (link) element
Dim y As Integer 'integer variable we'll use as a counter
Dim result As String 'string variable that will hold our result link
'initiating a new instance of Internet Explorer and asigning it to objIE
Set objIE = New InternetExplorer
'make IE browser visible (False would allow IE to run in the background)
objIE.Visible = True
'navigate IE to this web page (a pretty neat search engine really)
objIE.navigate "https://factfinder.census.gov/faces/nav/jsf/pages/index.xhtml"
'wait here a few seconds while the browser is busy
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
'in the search box put cell "A2" value, the word "in" and cell "C1" value
objIE.document.getElementById("cfsearchtextboxmain").Value = _
Sheets("Sheet1").Range("B3").Value & ", " & Sheets("Sheet1").Range("B4").Value
'click the 'go' button
IE.document.getElementById("communityfactssubmit").Click
'wait again for the browser
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
答案 0 :(得分:0)
您需要在这里做的一件事。
是遍历HTML元素本身。
根据站点的结构,您有两个选择。
但是基于给定的屏幕截图。我将假定这是站点的层次结构或结构。
这里需要做的一件事是进入span标签的内部类,即“ button-g”,然后进入AutoCompleteGoButton类。
Dim spanElement as Object, buttonElement as Object
Set spanElement = IE.document.getElementsByClassName("button-g")
Set buttonElement = spanElement(0).getElementsByClassName("AutoCompleteGoButton")
buttonElement(0).Click
请注意,(0)是该元素的索引号。假定这些元素是唯一在网页上具有这些类名称的HTML元素。
答案 1 :(得分:0)
尝试
setSecondaryPhy()
似乎有一个ID,您可以使用:
这使用的是您提供的link,与您显示的HTML不同,该按钮确实具有ID。
如果没有立即找到该元素,请确保您正在等待页面加载:
IE.document.getElementById("communityfactssubmit").Click
尝试点击之前。
您可以使用
添加额外的等待时间While IE.Busy Or IE.readyState < 4: DoEvents: Wend
编辑:
我刚刚成功测试了以下完整脚本:
Application.Wait Now + TimeSerial(0,0,2) '<==replace 2 with number of seconds to wait
更好的选择:使用免费的API
我也强烈建议您首先使用事实查找器来探索感兴趣的数据并注意感兴趣的特定变量/数据表,然后再转向使用API来处理这些请求。这样会更快更干净。
有一系列有关如何使用此API here的教程。
数据集信息here