以下是我正在使用的代码:
Sub Websitedata()
Dim ie As Object
Dim myURL As String
myURL = "FIRST PAGE"
Set ie = New InternetExplorerMedium
ie.Visible = True
ie.navigate myURL
Do While ie.readyState <> 4 And ie.Busy
DoEvents
Loop
'Selects a type from a dropdown bar
ie.document.forms("actionForm").elements("dropdownbar").Value = "311"
'Inputs data
ie.document.forms("actionForm").elements("inputbox1").Value = ""
'Inputs data
ie.document.forms("actionForm").elements("inputbox2").Value = ""
'Inputs data
ie.document.forms("actionForm").elements("inputbox3").Value = ""
'Inputs data
ie.document.forms("actionForm").elements("inputbox4").Value = ""
'Inputs data
ie.document.forms("actionForm").elements("inputbox5").Value = ""
'Pressed submit and goes to next page.
ie.document.forms("actionForm").elements("_eventId_Search").Click
'Needs to press a radiobutton.
ie.document.getElementByName("declarationId").Click
End Sub
点击单选按钮时遇到问题。尝试检查,点击,重视一切。
以下是该页面的HTML:
<TABLE id=declarationList class="list sortable" cellSpacing=0 cellPadding=0 width="100%"><TBODY>
<TR class=header>
<TH style="TEXT-ALIGN: center" align=center></TH>
<TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">Type<SPAN class=sortarrow sortdir="down"> ?</SPAN></A></TH>
<TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">rts<SPAN class=sortarrow> </SPAN></A></TH>
<TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">tyi<SPAN class=sortarrow> </SPAN></A></TH>
<TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">trtjm<SPAN class=sortarrow> </SPAN></A></TH>
<TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">erch<SPAN class=sortarrow> </SPAN></A></TH>
<TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">dft<SPAN class=sortarrow> </SPAN></A></TH>
</TR>
<TR class=evenRow>
<TD style="TEXT-ALIGN: center" align=center><INPUT onclick="updateButtons('Import','GF','79295876',false,'null',false,true,true,false,false,false)" type=radio value=79295876 name=declarationId> </TD>
<TD>IM A </TD>
<TD>4561548 </TD>
<TD>29/03/2018 </TD>
<TD>32856 </TD>
<TD>0313 </TD>
<TD>40 00 , 40 00 </TD>
</TR>
</TBODY></TABLE>
我需要它来选择下一页中出现的单选按钮。我是否必须在顶部更改某种数据?请告诉我。我很迷惑。
更新 - 此查询仍然没有答案。请帮忙
答案 0 :(得分:1)
您可以尝试使用CSS选择器
ie.document.querySelector("input[type=""radio""]").Click
使用提供的HTML测试CSS选择器:
有关CSS选择器的更多信息,请访问:CSS Selectors
备注:强>
如果页面正在刷新,由于之前的点击,那么在点击之后您可能需要引入等待:
Application.Wait Now + TimeSerial(0,0,3)
ie.document.querySelector("input[type=""radio""]").Click
或,
While .Busy = True Or .readyState < 4: DoEvents: Wend
ie.document.querySelector("input[type=""radio""]").Click
上述组合或甚至是循环,超时,尝试设置单击元素:
Dim a As Object, exitTime As Date
exitTime = Now + TimeSerial(0, 0, 5)
Do
DoEvents
On Error Resume Next
Set a = IE.document.querySelector("input[type=""radio""]")
On Error GoTo 0
If Now > exitTime Then Exit Do
Loop While a Is Nothing
a.Click
如果打开一个新窗口,则需要查找该窗口的句柄,或者计数最多的窗口(最近的)。有详细说明这个方法。
以下是循环输入标记以查找type
属性radio
的输入标记的示例。这取决于你是否有一个以上是否点击了正确的,但给你一个想法。
Option Explicit
Public Sub test()
Dim n As HTMLDocument
Set n = New HTMLDocument
n.body.innerHTML = [A1] '<== your sample of HTML place in a cell
Dim aList As Object, item As Object
Set aList = n.getElementsByTagName("input")
For Each item In aList
On Error Resume Next
If InStr(item.getAttribute("type").innerText, "radio", 1) > 0 Then
Debug.Print item.outerHTML
item.Click
Exit For
End If
On Error GoTo 0
Next item
End Sub