получить полное значение из частичного идентификатора при очистке с использованием VBA и селена - PullRequest
1 голос
/ 27 сентября 2019

Я (пытаюсь) собрать информацию со страницы интрасети с большим количеством

<div id="CustID_1234567"[...]>
    <div class="logged">2019-09-27</div>
</div>
<div id="CustID_2345678"[...]>
    <div class="logged">2019-09-26</div>
</div>

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

Я пробовал разные варианты FindElementsByXPath при циклическом просмотре кода, но я не знаю, как получить текст идентификатора

    Customers(a)=bot.FindElementsByXPath("//*[contains(@id, 'CustID_')]").Item(a).ID
    Customers(a)=bot.FindElementsByXPath("//*[contains(@id, 'CustID_')]").Item(a).text

Первый (.id) заканчивается ошибкой, но последний (.text) получает текст (duh), "2019-09-27" и "2019-09-26", так что я думаю, что яне так уж далеко от реального решения.

Любое предложение, пожалуйста?

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Существует более быстрый способ (быстрее, чем xpath) с правильным синтаксисом для добавления в массив с использованием селекторов css.Это также более точно, так как оно соответствует при запуске, а не содержит.

Dim elem As Object, elems As Object
Set elems = bot.FindElementsByCss("[id^=CustID_]")
For each elem in elems
    Debug.Print elem.Attribute("id")
Next

Хранение в массиве

Dim elem As WebElement, elems As WebElements, i As Long, arr()
Set elems = bot.FindElementsByCss("[id^=CustID_]")
ReDim arr(1 To elems.Count)

For Each elem In elems
    i = i + 1
    arr(i) = elem.Attribute("id")
Next
1 голос
/ 27 сентября 2019

Получить атрибут «id» из найденного элемента, чтобы получить полное значение.

bot.FindElementsByXPath("//*[contains(@id, 'CustID_')]").Item(a).attribute("id")
...