Нажмите на кнопку из выпадающего меню VBA - PullRequest
0 голосов
/ 05 февраля 2020

У меня проблемы с нажатием на кнопку из выпадающего меню. Вот HTML:

<div class="dropdown text-center">
   <button class="btn btn-secondary dropdown-toggle" aria-expanded="false" aria-haspopup="true" type="button" data-toggle="dropdown">
      <!-- react-text: 400 -->Process Path Group: <!-- /react-text --><!-- react-text: 401 -->ALL<!-- /react-text -->
   </button>
   <div class="dropdown-menu dropdown-menu-right" aria-labelledby="statusProcessPathGroupDropdown" style="left: 0px; top: 0px; position: absolute; transform: translate3d(206px, 37px, 0px);" x-placement="bottom-end"><button class="dropdown-item active" type="button">ALL</button><button class="dropdown-item" type="button">SINGLE</button><button class="dropdown-item" type="button">MULTI</button></div>
</div>

Я хочу нажать на кнопку ВСЕ, но не могу попасть туда, чтобы нажать на нее. Я перепробовал все. Вот моя последняя попытка.

Sub Macro()
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = True
  Set IE = New InternetExplorerMedium
  url1 = "url1"

With IE
   .Visible = True
   .navigate url1


End With

Set AvailableLinks = IE.document.getElementByTagName("button")
        For Each cLink In AvailableLinks
            If cLink.innerHTML = "ALL" Then
            cLink.Click
            End If

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 05 февраля 2020

Нет такой вещи, как .getElementByTagName().

Метод, который вы ищете, это .getElementsByTagName(), который возвращает коллекцию html элементов.

Также в вашем случае внутренний элемент кнопки html:

<!-- react-text: 400 -->Process Path Group: <!-- /react-text --><!-- react-text: 401 -->ALL<!-- /react-text -->

, а не просто ALL

Итак, вы можете go для чего-то вроде :

Set AvailableLinks = IE.document.getElementsByTagName("button")

For Each clink In AvailableLinks
    If clink.innerHTML = "<!-- react-text: 400 -->Process Path Group: <!-- /react-text --><!-- react-text: 401 -->ALL<!-- /react-text -->" Then
    clink.Click
    End If
Next clink

Или даже проще:

Set AvailableLinks = IE.document.getElementsByTagName("button")

For Each clink In AvailableLinks
    If clink.innerText = "Process Path Group: ALL" Then
    clink.Click
    End If
Next clink
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...