Найти идентификатор формы на веб-сайте и ввести значение с помощью VBA - PullRequest
0 голосов
/ 11 мая 2018

Мне потребовалась бы небольшая помощь в поиске идентификатора формы на общедоступном веб-сайте (http://www.medicines.ie/). Они обновили сайт, и предыдущий идентификатор больше не работает, поскольку теперь нет идентификатора, который можно найти. Что я пытаюсьчтобы сделать это открыть этот сайт с VBA, введите значение из конкретной ячейки в Excel в форму (текстовое поле) на этом сайте и нажмите кнопку поиска. Я использую код ниже:

Sub Medicinesie()
Dim IE As Object
Set IE = CreateObject("INTERNETEXPLORER.APPLICATION")
IE.navigate "http://www.medicines.ie/"
IE.Visible = True

Do
DoEvents
Loop Until IE.ReadyState = READYSTATE_COMPLETE

    IE.Document.getElementById("input").Value = Range("spc")  '<---- spc is the name of the cell I am referencing 
    IE.Document.forms(0).submit

Do
DoEvents
Loop Until IE.ReadyState = READYSTATE_COMPLETE

End Sub

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Если установлена ​​ оболочка selenium vba и добавлены инструменты> справочная информация> библиотека типов селена

Option Explicit
Public Sub test()
    Dim d As WebDriver
    Set d = New ChromeDriver '<== can change to internet explorer driver

    With d
        .Start "Chrome"
        .Get "http://www.medicines.ie/"
        .FindElementByCss("input.search__input").SendKeys "Aspirin" '<== Range("spc")
        .FindElementByTag("form").Submit
        Stop
        '.Quit
    End With
End Sub

Пример выполнения:

Run

0 голосов
/ 11 мая 2018

Похоже, что вы можете воспользоваться созданием URL на этом сайте. URL построен: http://www.medicines.ie/medicines?page=1&per-page=25&query= + все, что вы хотели бы найти в этой базе данных.

Sub MedicineS()
Dim IE As Object
Set IE = CreateObject("INTERNETEXPLORER.APPLICATION")
Dim URL As String

URL = "http://www.medicines.ie/medicines?page=1&per-page=25&query=" & _ 
Range("spc")
IE.Visible = True
IE.navigate URL

Do While IE.readyState <> READYSTATE_COMPLETE
Loop

End Sub

Однако, если вы все же предпочитаете использовать свой собственный способ, имейте в виду, что искомый ввод занимает 4-е место в коде, поэтому: IE.Document.getElementByTagName ( "вход") (3) .Value а кнопка вторая так: IE.Document.getElementByTagName ( "кнопка") (1) .Нажмите

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