Извлечение данных c с веб-сайта, используя selenuim VBA - PullRequest
0 голосов
/ 20 апреля 2020

Сложность в извлечении кода IEC с этого сайта: http://eodc.online/ Примеры номеров для поиска:

  1. 0530154706
  2. 0530154706
  3. 0330005903

У меня есть серия чисел, которые будут go до Панель поиска , а затем нажата Подтвердить См. Изображение .., Image 1

Option Explicit

Public Sub EODCsite()

Dim bot As WebDriver
Dim count As Long

Set bot = New WebDriver
bot.Start "chrome"
count = 1
While (Len(Range("A" & count)) > 0)

bot.Get "http://eodc.online/"

bot.FindElementById("authorise_no").SendKeys Range("A" & count)
bot.FindElementById("auth_details").Click

Range("B" & count) = bot.FindElementByXPath("//span[@id='IEC_code']").Text

count = count + 1

Wend
bot.Quit

End Sub

 '     "command": "doubleClick",
  '    "target": "id=IEC_code",
   '   "targets": [
    '    ["id=IEC_code", "id"],
     '   ["css=#IEC_code", "css:finder"],
      '  ["xpath=//span[@id='IEC_code']", "xpath:attributes"],
       ' ["xpath=//div[@id='showLicense']/div/span[6]", "xpath:idRelative"],
 '       ["xpath=//span[6]", "xpath:position"],
  '      ["xpath=//span[contains(.,'0591045869')]", "xpath:innerText"]

В конце комментария есть код Java, полученный от расширения Selenium IDE chrome после запуска на одном пример. С помощью этого кода я могу заполнить только одну ячейку, и это первая ячейка после того, как я запустил этот код.

Пожалуйста, помогите. У меня меньше опыта в Span Id и Css селекторах (если требуется).

1 Ответ

1 голос
/ 20 апреля 2020

Это шаги псевдокода. По сути, вам необходимо 1) l oop поверх кодов 2) отправить код в очищенное поле ввода 3) Дождаться отображения результатов. (Код не предназначен для копирования и не тестируется, но является приближением к тому, что я написал бы)

for code in codes: ' this is your loop over the cells
    bot.FindElementById("authorise_no").sendKeys code  'enter
    bot.FindElementById("auth_details").click 'submit

    Do
        DoEvents
    Loop While document.querySelector("#showLicense").getAttribute("style") = "display: none;" 'loop until style attribute becomes empty for showLicence node 

    If document.querySelector("#showLicense").getAttribute("style") = vbNullString Then

        Application.Wait Now + Timeserial(0,0,1) ' small pause for results to render
        Debug.Print bot.FindElementById("IEC_code").text 'do something with result
    End If    
    bot.execute_script("document.querySelector('#authorise_no').value= '';") 'clear value ready for next value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...