IE автоматизация VBA - Как получить доступ к кнопке диапазона без текста - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь выполнить автоматизацию IE с помощью VBA и столкнулся с проблемой щелчка по элементу диапазона.

Я хочу щелкнуть по элементу ниже. код для страницы HTML. Поскольку это страница intr anet, не могу опубликовать ссылку на нее.

<a tabindex="-1" class="x-btn x-unselectable x-box-item x-toolbar-item x-btn-default-toolbar-small x-btn-over" id="KEY_TOOLTIP_Export" style="margin: 0px; left: 32px; top: 2px; right: auto;" hidefocus="on" unselectable="on" componentId="KEY_TOOLTIP_Export" data-qtip="Export">
  <span class="x-btn-wrap x-btn-wrap-default-toolbar-small " id="KEY_TOOLTIP_Export-btnWrap" role="presentation" data-ref="btnWrap" unselectable="on">
    <span class="x-btn-button x-btn-button-default-toolbar-small  x-btn-no-text x-btn-icon x-btn-icon-left x-btn-button-center " id="KEY_TOOLTIP_Export-btnEl" role="presentation" data-ref="btnEl" unselectable="on">
      <span class="x-btn-icon-el x-btn-icon-el-default-toolbar-small de-icon-export_item " id="KEY_TOOLTIP_Export-btnIconEl" role="presentation" data-ref="btnIconEl" unselectable="on">&nbsp;</span>
        <span class="x-btn-inner x-btn-inner-default-toolbar-small" id="KEY_TOOLTIP_Export-btnInnerEl" data-ref="btnInnerEl" unselectable="on">&nbsp;</span>
</span>
</span>
</a>

Ниже приведены варианты, которые я пробовал использовать в других справочных публикациях. Найдите элемент Span по идентификатору, а затем найдите для него родительский элемент, который, похоже, является тегом.

doc.getElementById("KEY_TOOLTIP_Export-btnIconEl").ParentNode.Click

Также пробовал использовать имя класса.

doc.getElementsByClassName("x-btn-icon-el x-btn-icon-el-default-toolbar-small de-icon-export_item").Item(0).ParentNode.Click

Я могу найдите элемент в родительском фрейме с помощью параметра отладки, чтобы исключить iFrame, не так ли?

Я новичок в HTML, JavaScript, поэтому не понимаю, что еще проверять .

1 Ответ

0 голосов
/ 02 июня 2020

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

Sub Test()
    Dim IE As Object
    Dim selectItem As Object

    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Visible = True
        .Navigate "<website url>"

        While IE.ReadyState <> 4
            DoEvents
        Wend
        'Find element by ID property.
       'Set selectItem = IE.document.getElementById("KEY_TOOLTIP_Export-btnIconEl")
       'Debug.Print SelectItem.innerText
       'selectItem.Click

       'Find element by Class Name 
       Set selectItem = IE.document.getElementsByClassName("x-btn-icon-el x-btn-icon-el-default-toolbar-small de-icon-export_item")(0)

       Debug.Print selectItem.innerText
       selectItem.Click

    End With
    Set IE = Nothing
End Sub

Примечание. Не забудьте изменить URL-адрес веб-сайта на свой собственный.

Чтобы увидеть эффект более отчетливо, я добавил событие onclick в тег span и тег. Ресурс Html, как показано ниже:

 <a tabindex="-1" onclick="alert('a click');" class="x-btn x-unselectable x-box-item x-toolbar-item x-btn-default-toolbar-small x-btn-over" id="KEY_TOOLTIP_Export" style="margin: 0px; left: 32px; top: 2px; right: auto;" hidefocus="on" unselectable="on" componentId="KEY_TOOLTIP_Export" data-qtip="Export">
    <span class="x-btn-wrap x-btn-wrap-default-toolbar-small " id="KEY_TOOLTIP_Export-btnWrap" role="presentation" data-ref="btnWrap" unselectable="on">
        <span class="x-btn-button x-btn-button-default-toolbar-small  x-btn-no-text x-btn-icon x-btn-icon-left x-btn-button-center " id="KEY_TOOLTIP_Export-btnEl" role="presentation" data-ref="btnEl" unselectable="on">
            <span class="x-btn-icon-el x-btn-icon-el-default-toolbar-small de-icon-export_item " id="KEY_TOOLTIP_Export-btnIconEl" role="presentation" data-ref="btnIconEl" onclick="alert('hi');" unselectable="on">&nbsp;</span>
            <span class="x-btn-inner x-btn-inner-default-toolbar-small" id="KEY_TOOLTIP_Export-btnInnerEl" data-ref="btnInnerEl" unselectable="on">&nbsp;</span>
        </span>
    </span>
</a>

Снимок экрана:

enter image description here

Если элементы внутри тега iframe, Html ресурс, подобный этому:

enter image description here

Вы можете использовать следующий код, чтобы сначала найти элемент iframe, а затем получить доступ к элементу span.

   Set selectItem = IE.document.getElementsByTagName("iframe")(0).contentDocument.getElementById("KEY_TOOLTIP_Export-btnIconEl")
   'Debug.Print selectItem.innerText 'debug, check the inner text.
   selectItem.Click
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...