通过vba自动选择Web表单中的单选按钮

时间:2017-12-26 13:09:26

标签: html excel-vba radio-button vba excel

我正在尝试使用VBA excel自动化此网站。我很震惊,我必须在2 radio buttons之间进行选择。因为我是VBA的新手,所以真的很混淆这些单选按钮的编码部分。 这是单选按钮的 HTML 脚本。

<li class="required or ok" id="petGenderLI">
            <div class="formElTop" id="petGenderMainDiv">
                <div class="leftCol" id="petGenderLeftDiv">

<label id="yourPetGenderField-label"><span class="petNameToReplace">Your pet</span>'s <span style="white-space: nowrap;">Gender</span></label>

</div>
                <div class="rightCol radios" id="petGenderRightDiv">
                    <div class="buttonLeft">
                        <input name="pets[0].gender" class="radio" id="yourDetailsPolicyHolderPetGender-f0" type="radio" value="NWA_PET_M" data-di-field-id="pets0Gender"><label for="yourDetailsPolicyHolderPetGender-f0">Male</label>
                    </div>
                    <div class="buttonRight">
                        <input name="pets[0].gender" class="radio" id="yourDetailsPolicyHolderPetGender-m0" type="radio" value="NWA_PET_F" data-di-field-id="pets0Gender"><label for="yourDetailsPolicyHolderPetGender-m0">Female</label>
                    </div>

                </div><span class="errorIcon">&nbsp;</span><div class="errorMessage"><div class="errorTop"><div class="errorContent"></div></div></div>
                <div class="clearFloat" id="petGenderTailDiv">&nbsp;</div>
            </div>
        </li>

1 个答案:

答案 0 :(得分:0)

从您提供的HTML中,您可以按类别名称option来获取选项按钮。您没有显示足够的HTML,以确保这将限制为给定示例中的两个。假设他们这样做了,这将返回以下内容(假设下图中的"."className,并且.option的整个查询字符串与.document.getElementsByClassName("radio")相同。在HTML上使用CSS查询复制了VBA。

CSS查询:这将向您显示以下代码捕获的元素

CSS query


VBA代码大纲:

我们使用IE实例返回到HTML并返回加载的HTML文档的.getElementsByClassName方法将它们的类名作为选项按钮的目标。这是一个返回的0基本集合(如上图所示),因此对于第一个选项,您将按索引从0开始访问项目。

Option Explicit
Public Sub GetInfo()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")

    With ie
        .Visible = True
        .navigate "yourURL"

        While .Busy Or .readyState < 4: DoEvents: Wend

        Dim radioButtons As Object
        Set radioButtons = .document.getElementsByClassName("radio")
        radioButtons(0).Click                    '<== first option
        radioButtons(1).Click                    '<== first option

        'Quit '<== Remember to quit application
    End With
End Sub