Я знаю, что на SO были похожие вопросы по этой проблеме, и я просматривал и пробовал многие из них, но все же у меня возникла проблема с выбором параметра из раскрывающегося списка на веб-сайте. Я действительно пытаюсь понять это самостоятельно, но я не могу понять эту часть правильно.
К сожалению, к веб-сайту можно получить доступ только изнутри (конечно!), поэтому я не могу поделиться им, но я попытался предоставить HTML, который я считаю уместным.
Что я пытаюсь сделать, так это выбрать из списка опцию «Равно». Большинство моих попыток заканчиваются пропуском части IF = Equals To и переходом к следующей части VBA.
Вот пара моих недавних попыток. (Получение ошибки Object Required на подходах QuerySelector.
<!DOCTYPE html>
<html>
<body class = "bootstrap-wrapper" style = "cursor: auto;">
<div tabindex = "-1" class = "ui-dialog ui-corner-all ui-widget ui-widget-content ui-front dialog ui-draggable ui-resizable" role = "dialog" aria-describedby = "02T" aria-labelledby = "ui-id-1" style = "left: 328px; top: 167.5px; width: 977px; height: 603px; overflow: visible; display: block; position: absolute; z-index: 201;">
<div title = "" class = "chosen-container chosen-container-single chosen-container-single-nosearch chosen-with-drop chosen-container-active" id = "paymentReferenceNumber_chosen" style = "left: 482px; top: 279.41px; width: 200px; margin-top: 45px; margin-left: 0px; position: absolute;">
<div class = "chosen-drop" style = "display: block;">
<div class = "chosen-search"><input type = "text" readonly = "" autocomplete = "off"></div>
<ul class = "chosen-results">
<li class = "active-result result-selected" data-option-array-index = "0">
Select
</li>
<li class = "active-result" data-option-array-index = "1">
Equals To
</li>
<li class = "active-result" data-option-array-index = "2">
Contains
</li>
<li class = "active-result" data-option-array-index = "3">
Is Empty
</li>
</ul>
</div>
</div>
</div>
</body>
</html>Dim inputElement As HTMLInputElement
Set inputElement = doc.querySelector( _
"html body[class=bootstrap_wrapper] tbody div[tabindex=-1] div[class=chosen-container chosen-container-single chosen-container-single-nosearch chosen-with-drop chosen-container-active] div[class=chosen-drop] ul[class=chosen-results] li[class=active-result][data-option-array-index=1]")
If Not inputElement Is Nothing Then
inputElement.Click
End If
ИЛИ
ieApp.Document.querySelector("Select[name=paymentReferenceNumber_oper] option[value=equalsTo]").Selected = True
ИЛИ
Set ElementCol = ieApp.Document.getElementsByTagName("li")
For Each ee In ElementCol
If ee.innerHTML = "Equals To" Then
ee.Click: DoEvents: Sleep 1000
Exit For
End If
Next ee
Большинство других ссылок я смог выбрать, просто используя:
ieApp.Document.all.Item("adv_search_tab").Click: Sleep 1000
Или используя:
Set ElementCol = ieApp.Document.getElementsByTagName("input")
For Each ee In ElementCol
If ee.Name = "search" Then
ee.Click: DoEvents: Sleep 1000
Exit For
End If
Next ee
Это всего лишь два из недавних сообщений SO, которые я просматривал, чтобы попытаться понять альтернативы: VBA выбирает значение из раскрывающегося списка на веб-странице





