Ваш выпадающий список - это выпадающий список css, а не собственный выпадающий список, который реализуется исключительно с помощью тегов <select>
и <option>
.
параметры раскрывающегося списка происходят из li
внутри <ul class="typeahead typeahead-long dropdown-menu"
, и они прикрепляются к странице только после нажатия стрелки вниз справа.
Причиной существования <select>
со многими <option>
является вышеуказанный атрибут li
: data-value
, созданный на этих <option>
. Вы можете думать, что эти <option>
являются источником данных для li
. Таким образом, <select>
, не видимый на странице, действует как база данных за внешним интерфейсом для предоставления данных, поэтому стиль <select>
установлен на display: none
, что означает, что он не виден на странице.
Чтобы действовать как поведение пользователя, вы должны найти и выбрать опцию из li
внутри ul
после щелчка, чтобы развернуть все li
. Вместо того, чтобы выбрать опцию из невидимого <select>
или изменить select
, отобразите значение css, чтобы сделать его видимым, затем выберите опцию из него.
// click down arrow to expand all options
driver.find_element_by_css_selector(
".department-combobox .input-group > span").click();
// search all options
options = driver.find_elements_by_css_selector(
".department-combobox .input-group > ul > li")
// print all option text
for(opt in options):
println opt.text
// select specific option by text
target = 'Anthropology'
driver.find_element_by_css_selector(
".department-combobox .input-group > ul")
.find_element_by_xpath("./li[.="+target+"]")
.click();