VBA для вставки данных в поле поиска IE - PullRequest
0 голосов
/ 10 января 2019

Когда я вставляю несколько слов в поле поиска, происходит выборка связанных данных. Мне нужно выбрать первый вариант из него.

Есть один сайт "https://indiarailinfo.com/" Когда я ищу «ADI» из окна станции, система выбирает связанную станцию, имеющую «ADI» в своем имени? Первый вариант всегда показывает очень близкое соответствие с ним. Как я могу выбрать первый вариант из него, используя код VBA

Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate "https://indiarailinfo.com/"
While ie.readyState <> 4: DoEvents: Wend
ie.Visible = True
ie.document.querySelector("[placeholder='from station']").Value = "ADI"

HTML-коды могут быть доступны с этого сайта

Это первый ответ в выпадающем меню, например, "ADI / Ahmedabad Junction" Как я могу получить этот ответ в выбранном "

Просьба предложить

1 Ответ

0 голосов
/ 10 января 2019

Пуристам автоматизации не понравится использование javascript для выполнения, но здесь я буду использовать IE, чтобы вызвать раскрывающийся список. Если бы я шел чистым путем, я бы использовал селен.

Option Explicit   
Public Sub MakeSelection()
    Dim ie As InternetExplorer, t As Date, dropdown1 As Object
    Set ie = New InternetExplorer
    Const MAX_WAIT_SEC As Long = 5

    With ie
        .Visible = True
        .Navigate2 "https://indiarailinfo.com/"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document.querySelector("[placeholder='from station']")
            .Focus
            .Value = "ADI"
            ie.document.parentWindow.execScript "document.querySelector('[placeholder^=from]').click();"
        End With
        t = Timer
        Do
            DoEvents
            On Error Resume Next
            Set dropdown1 = .document.querySelectorAll(".icol span")
            On Error GoTo 0
            If Timer - t > MAX_WAIT_SEC Then Exit Do
        Loop While dropdown1.Length = 0
        If dropdown1.Length > 0 Then
            dropdown1.item(0).Click
        End If

        Stop
        .Quit
    End With
End Sub

Для автоматизации пуристов с использованием селена базового

Option Explicit    
Public Sub MakeSelection()
    Dim d As WebDriver
    Set d = New ChromeDriver
    Const Url = "https://indiarailinfo.com/"

    With d
        .Start "Chrome"
        .get Url
        .FindElementByCss("[placeholder='from station']").SendKeys "ADI"
        .FindElementByCss(".icol span").Click
        Stop
        .Quit
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...