VBA IE更改下拉值

问题描述:

尝试了下面的代码以下URL Scripture look up。请如何将下拉值从WEB更改为RV1909VBA IE更改下拉值

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检查的截图:

Screenshot of Chrome Inspector

在这种情况下,仅仅更改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 
+0

谢谢您的解决方案。 –

更改HTML div元素<div class=app-list text-list>WEB</div><div class=app-list text-list>RV1909</div>

+0

请,我将如何修改这个改变DIV IEApp.Doc.getElementsByClassName(“应用列表文本列表”)(0).value的= “RV1909” –

+0

尝试了其他帖子的很多方法,以下不起作用: IEApp.Doc.getElementsByClassName(“app-list text-list”)(0).innerHTML =“RV1909” –