Excel VBA для выбора элемента HTML из списка в таблице - PullRequest
0 голосов
/ 22 марта 2019

Я знаю, что на SO были похожие вопросы по этой проблеме, и я проверял и пробовал многие из них, но, тем не менее, у меня возникла проблема при выборе варианта из раскрывающегося списка на веб-сайте. Я действительно пытаюсь понять это самостоятельно, но я не могу понять эту часть правильно.

К сожалению, к веб-сайту можно получить доступ только изнутри (конечно!), Поэтому я не могу поделиться им, но я попытался предоставить HTML, который я считаю уместным.

То, что я пытаюсь сделать, это выбрать опцию «Равно» из списка. Большинство моих попыток заканчиваются тем, что я пропускаю IF = Equals To part и переходит к следующей части 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

OR

ieApp.Document.querySelector("Select[name=paymentReferenceNumber_oper] option[value=equalsTo]").Selected = True

OR

    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 выбирает значение из выпадающего списка на веб-странице

Параметр изменения Excel VBA в теге выбора HTML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...