Пожалуйста, попробуйте использовать метод dispatchEvent , чтобы отправить событие изменения в элемент select
, а затем вызвать событие onchange.
Пример кода, как показано ниже (вы можете обратиться к нему)и измените его, он хорошо работает на моей стороне):
Public Sub ClickTest()
Dim ie As Object, evtChange As Object
Dim item As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate2 "<the website url>"
While .Busy Or .readyState <> 4: DoEvents: Wend
Set evtChange = .Document.createEvent("HTMLEvents")
evtChange.initEvent "change", True, False
'get the select element. Please note the index, it is starting from 0.
Set item = ie.Document.getElementsByTagName("select")(0)
expCcy = "EUR"
'Set the Expression Currency
For Each o In item 'Sets Expression Currency
If o.Value = expCcy Then
o.Selected = True
o.dispatchEvent evtChange
Exit For
End If
Next
End With
End Sub
Ресурс веб-сайта, подобный этому:
<select id="ddlCurrency" onchange="ddlCurrencyChange()" >
<option value="GBP">GBP</option>
<option value="EUR">EUR</option>
<option value="USD">USD</option>
</select>
<script>
function ddlCurrencyChange() {
document.getElementById("result").innerHTML += "change event triggered... <br /> selected value is " + document.getElementById("ddlCurrency").value + "<br/>";
}
</script>