HTMLInputElement получает щелчок, а HTMLOptionElement получает - PullRequest
3 голосов
/ 03 марта 2010

Я пытаюсь написать код vba для заполнения веб-форм и нажатия кнопок для меня. Я перебираю различные теги option на странице, чтобы выбрать нужный. Когда я его достигаю, я хочу выбрать его, но не уверен в синтаксисе.

Dim htmlO As HTMLOptionElement
For Each htmlO In Object.getElementByTagName("option")
    If Trim(htmlO.value) = "INS" Then
       htmlO.????  (click? select?)
        Exit For
    End If
Next

Вот HTML-код с веб-страницы:

<select gtbfieldid="40" id="menu" name="pv_choice">
<option selected="selected" value="ZZZ">Choose Menu Option
</option><option value="BL_COMP">Blanket Companies
</option><option value="CARR_SEARCH">Carrier Search
</option><option value="PASSWORD">Change Password
</option><option value="FED_REG">FMCSA Register
</option><option value="FEEDBACK">Feedback
</option><option value="HOME">Home Page
</option><option value="INS">Insurance Filing
</option><option value="OOS_LIST">Out Of Service Carriers
</option></select>

Я хочу выбрать опцию «INS».

Ответы [ 4 ]

2 голосов
/ 26 июня 2012
Dim StrFindText  as string
Dim htmlSelect As HTMLSelectElement
Dim htmlItemOption As IHTMLOptionElement

Set htmlSelect  = Object.getElementById("menu")
StrFindText = "INS"

For i = 0 To htmlSelect.options.length - 1
    htmlItemOption = htmlSelect.options(i)
    ' UCase(htmlItemOption.text) = UCase(StrFindText) ' if find text options
    If UCase(htmlItemOption.value) = UCase(StrFindText) Then
       htmlItemOption.selected = True
       Exit For
    End If
Next i
1 голос
/ 25 июня 2018

Селектор CSS:

Вот гораздо более простой способ. Используйте CSS-селектор option[value='INS']. Это говорит о выборе элемента с тегом option, который имеет атрибут value со значением 'INS'.


CSS-запрос:

query


VBA:

Селектор CSS применяется с помощью метода .querySelector document.

objdoc.querySelector("option[value='INS']").Click  

или

objdoc.querySelector("option[value='INS']").Selected = True 
1 голос
/ 03 марта 2010

Я не использовал VBA, поэтому заранее извиняюсь, но, предполагая, что он использует ту же структуру для DOM, что и другие знакомые мне языки, попробуйте:

htmlO.selected= "selected"

, как я мог бы добиться этого в JavaScript:)

НТН

0 голосов
/ 03 марта 2010

В итоге получилось ...

Dim htmlO As HTMLSelectElement
Установить htmlS = objdoc.getElementById ("menu")
htmlS.selectedIndex = 7

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

...