【问题标题】:VBA IE change dropdown valueVBA IE 更改下拉值
【发布时间】:2017-07-29 16:05:23
【问题描述】:

尝试使用以下代码来跟踪 URL Scripture look up。请问如何将下拉值从WEB 更改为RV1909

Dim Doc As HTMLDocument
Set Doc = IEApp.document

TestV2 = ""
TestV3 = ""

TestV2 = Doc.getElementsByClassName("app-list text-list")(0).innerText
Debug.Print "4b of 5: " & TestV2    

IEApp.Doc.getElementsByClassName("app-list text-list").selectedIndex = 1
IEApp.Doc.getElementsByClassName("app-list text-list").FireEvent ("onchange")

TestV3 = Doc.getElementsByClassName("app-list text-list")(0).innerText
Debug.Print "4c of 5: " & TestV3

尝试了其他帖子的许多方法,以下不起作用:

IEApp.Doc.getElementsByClassName("app-list text-list")(0).innerHTML = "RV1909"

这是 Chrome Inspector 的截图:

【问题讨论】:

    标签: vba excel internet-explorer web-scraping


    【解决方案1】:

    在这种情况下,仅更改div.app-list.text-list 元素innerText 是不够的,因为您可以看到该元素很简单div,但甚至不是ul。它应该由在click 事件上调用的脚本进行更改。因此,首先您需要点击div 以显示整个列表,然后点击 RV1909 项。下面的例子展示了如何做到这一点:

    Sub Test()
    
        Dim oIE As Object
        Dim oDiv As Object
    
        Set oIE = CreateObject("InternetExplorer.Application")
        With oIE
            .Visible = True
            .Navigate "http://ebible.org/study/"
            Do While .readyState <> 4 Or .Busy
                DoEvents
            Loop
            With .Document
                Do While .readyState <> "complete"
                    DoEvents
                Loop
                Set oDiv = .getElementsByClassName("app-list text-list")(0)
                oDiv.Click
                Do While .readyState <> "complete"
                    DoEvents
                Loop
                For Each oNode In .getElementsByClassName("text-chooser-main")(0).getElementsByClassName("text-chooser-abbr")
                    If oNode.innerText = "RV1909" Then
                        oNode.Click
                        Do While oDiv.innerText <> "RV1909"
                            DoEvents
                        Loop
                        Exit For
                    End If
                Next
            End With
        End With
    
    End Sub
    

    【讨论】:

    • 感谢您的解决方案。
    【解决方案2】:

    将html div元素&lt;div class=app-list text-list&gt;WEB&lt;/div&gt;改为&lt;div class=app-list text-list&gt;RV1909&lt;/div&gt;

    【讨论】:

    • 请问,我将如何修改它以更改 DIV IEApp.Doc.getElementsByClassName("app-list text-list")(0).Value = "RV1909"
    • 尝试了其他帖子的许多方法,以下方法不起作用:IEApp.Doc.getElementsByClassName("app-list text-list")(0).innerHTML = "RV1909"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多