Как выбрать li-tag с помощью vba? - PullRequest
0 голосов
/ 25 апреля 2020

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

Но это меня ломает: я хочу выбрать значение c (здесь "B") в выпадающем поле (li) и обновить сайт.

Вот часть int anet -site:

<div class="dropdown btn-group">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">
<span class="dropdown-text">B</span>
<span class="caret"></span>
</button><ul class="dropdown-menu" role="menu">
<li class="" aria-selected="false">
<a data-action="A" class="dropdown-item dropdown-item-button">A</a>
</li>
<li aria-selected="true" class="active">
<a data-action="B" class="dropdown-item dropdown-item-button">B</a>
</li>
<li aria-selected="false" class="">
<a data-action="C" class="dropdown-item dropdown-item-button">C</a>
</li>
<li aria-selected="false" class="">
<a data-action="-1" class="dropdown-item dropdown-item-button">All</a>
</li>
</ul>
</div>

А вот короткий vba-скрипт без других циклов и данных. С этим я могу прочитать значения из выпадающего списка - но как я могу выбрать одно (то есть "B") и обновить страницу?

Sub GetData()
 Dim IE As New InternetExplorer, html As HTMLDocument
 Dim elem As Object, data As String

 With IE
  .Visible = True
  .navigate "site from intranet"
  Do While .readyState <> READYSTATE_COMPLETE: Loop
  Set html = .document
 End With
 data = ""
 For Each elem In html.getElementsByClassName("dropdown-menu")(0).getElementsByTagName("li")
 data = data & " " & elem.innerText
 Next elem
 Range("A1").Value = data
 IE.Quit
End Sub

Так как это из нашего интр anet I не могу опубликовать весь код, надеюсь, вы все равно дадите мне совет.

1 Ответ

0 голосов
/ 25 апреля 2020

Вы можете попробовать использовать атрибут = значение css селектор

ie.document.querySelector("[data-action=B]").click

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

Возможно, вам потребуется установить атрибут «class», «active» в родительском li; и / или setAttribute "aria-selected", True

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