无法使用VBA在网站中选择Radiobutton

无法使用VBA在网站中选择Radiobutton,vba,radio-button,Vba,Radio Button,以下是我正在使用的代码: 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 DoEve

以下是我正在使用的代码:

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
子网站数据()
模糊的物体
将myURL设置为字符串
myURL=“第一页”
设置ie=新的InternetExplorerMedium
可见=真实
浏览我的网址
在ie.readyState 4和ie.Busy.忙的时候做
多芬特
环
'从下拉栏中选择类型
ie.document.forms(“actionForm”).元素(“dropdownbar”).Value=“311”
'输入数据
ie.document.forms(“actionForm”).elements(“inputbox1”).Value=“”
'输入数据
ie.document.forms(“actionForm”).elements(“inputbox2”).Value=“”
'输入数据
ie.document.forms(“actionForm”).elements(“inputbox3”).Value=“”
'输入数据
ie.document.forms(“actionForm”).elements(“inputbox4”).Value=“”
'输入数据
ie.document.forms(“actionForm”).elements(“inputbox5”).Value=“”
'按提交并转到下一页。
ie.document.forms(“actionForm”)。元素(“\u eventId\u Search”)。单击
'需要按一个单选按钮。
ie.document.getElementByName(“声明ID”)。单击
端接头
单击单选按钮时出现问题。尝试检查、单击、评估所有内容

以下是页面的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">&nbsp;&nbsp;?</SPAN></A></TH>
    <TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">rts<SPAN class=sortarrow>&nbsp;&nbsp;&nbsp;</SPAN></A></TH>
    <TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">tyi<SPAN class=sortarrow>&nbsp;&nbsp;&nbsp;</SPAN></A></TH>
    <TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">trtjm<SPAN class=sortarrow>&nbsp;&nbsp;&nbsp;</SPAN></A></TH>
    <TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">erch<SPAN class=sortarrow>&nbsp;&nbsp;&nbsp;</SPAN></A></TH>
    <TH><A onclick="ts_resortTable(this);return false;" class=sortheader href="">dft<SPAN class=sortarrow>&nbsp;&nbsp;&nbsp;</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>

我是一个
4561548
29/03/2018 
32856
0313
40 00 , 40 00 
我需要它来选择出现在下一页的单选按钮。我是否必须更改顶部的某些数据?请让我知道。我很困惑


更新-此查询仍然没有答案。请提供帮助

您可以尝试使用CSS选择器

ie.document.querySelector("input[type=""radio""]").Click

使用提供的HTML测试CSS选择器:

有关CSS选择器的更多信息,请参见:


注意事项:

如果由于先前的单击而刷新页面,则在单击之后,您可能需要引入等待:

Application.Wait Now + TimeSerial(0,0,3)
ie.document.querySelector("input[type=""radio""]").Click    
或者

如果打开了一个新窗口,则需要查找该窗口的句柄,或者查找计数最高(最近)的窗口。有很多方法可以详细说明这一点

下面是一个循环输入标记的示例,用于查找具有
radio
属性的
type
。这取决于您是否有多个,以及它是否单击了正确的一个,但会给您一个想法

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
选项显式
公共子测试()
Dim n作为HTMLDocument
Set n=新的HTMLDocument
n、 body.innerHTML=[A1]'0然后
Debug.Print item.outerHTML
项目。单击
退出
如果结束
错误转到0
下一项
端接头

单选按钮的html在哪里?这是什么网站?我已经给出了页面的html。请检查您收到了什么消息?这是一个内部URL吗?让我澄清一下。第一个代码输入数据并单击提交。提交后,将转到单选按钮所在的下一页。我认为它需要一个代码来理解它应该在当前页面中找到单选按钮,而不是在旧页面中搜索。请帮助我。我在notes部分添加了更多信息。我正在获取的对象不支持此代码“”的此属性错误,即“ie.document.querySelector”(“input[type=”“radio”“]”)
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
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