как выбрать опцию из выпадающего списка на веб-странице, используя внутренний текст - PullRequest
1 голос
/ 29 мая 2019

Как выбрать параметр из раскрывающегося списка на веб-странице, используя внутренний текст

ниже код VBA

Sub navigation_site_with_part_number()
    Dim eRow As Long
    Dim ele As Object
    Set sht = Sheets("Sheet1")
    RowCount = 1`enter code here
    eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    Set objIE = CreateObject("InternetExplorer.Application")
    requestnumber = InputBox("Enter the request number.")
    With objIE
    .Visible = True
    .navigate "*http://www.auto.com*"
    Do While .Busy Or _
    .readyState <> 4
    DoEvents
    Loop
    .document.getElementsByid("inspNumber").selectedinnertext = 2
   .document.getElementById("InspQuery_Search").Click
    Do While .Busy Or _
   .readyState <> 4
    DoEvents
    Loop
    End With

Ниже приведен HTML-код:

div id="RequestNumberGroup" class="form-group">
<label for="TextRequestNumber">Request Number:</label>
<select class="form-control" id="inspNumber" name="inspNumber">
  <option value=""></option>
  <option value="813">20190205</option>
  <option value="1034">20190426</option>
  <option value="1059">20190451</option>
  <option value="1061">20190453</option>
  <option value="1064">20190456</option>
  <option value="1065">20190457</option>

Я ожидал выбрать опцию в выпадающем списке с номером запроса, а не со значением опции

1 Ответ

0 голосов
/ 29 мая 2019

В реализации IE отсутствует опция выбора по тексту.

1) Либо собрать коллекцию / список узлов и цикл, сравнивая innerText с желаемой текстовой строкой, затем выбрать, если найден, и выйти для

Dim options As Object, i As Long, found As Boolean

Set options = ie.document.querySelectorAll("#inspNumber options")

For i = 0 To options.length - 1
    If options.item(i).innerText = "target string" Then
        options.item(i).Selected = True
        found = True
        Exit For
    End If
Next
If Not found Then
    'do something if not found
End If

2) Используйте оболочку selenium vba , которая реализует эту функциональность

Dim ele As Select
Set ele = driver.FindElementById("inspNumber").AsSelect
ele.SelectByText "Option Text"

N.B. Конечно, используются значения атрибутов и методы selectedIndex, но они вам не нужны.

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