Python Selenium: возможно ли изменить значение при нажатии опции в выпадающем меню?
Я использую Python Selen для проведения некоторых поисков. На одной веб-странице, которую я запрашиваю, диалог поиска позволяет мне указать в раскрывающемся меню, если я хочу выполнить поиск по всем разделам или конкретному разделу. Чтобы выбрать какой раздел, у сайта есть отдельный диалог во всплывающем окне, где я могу щелкнуть один раздел, и после этого опции "этот раздел" в раскрывающемся меню внутренне присваивается значение выбранного раздела. Вот как выглядит селектор при проверке:
<select ...>
<option id="searchthissection" value="<sectionname>">Search only in this section</option>
<option id="searchallsections" value="">Search in all sections</option>
</select>
Таким образом, значение устанавливается с помощью внешнего всплывающего диалога. После установки я запускаю опцию следующим образом:
webdriver.find_element_by_xpath("//select[@id='searchoption']/option[text()'Search only in this section']").click()
Теперь я в принципе могу использовать селен, чтобы открыть всплывающее окно выбора, переключиться на него, найти раздел, щелкнуть, переключиться назад и выбрать опцию "поиск в этом разделе". Но это невероятно неэффективно, в том числе и потому, что всплывающее окно загружается медленно и имеет несколько страниц для переключения.
Я могу легко перечислить / сгенерировать все значения, которые я хотел бы принять. Есть ли способ установить значение непосредственно при нажатии на эту опцию? Я думаю о чем-то вроде этого:
webdriver.find_element_by_xpath("//select[@id='searchoption']/option[text()'Search only in this section']").set_value('<sectionname>').click()
Есть идеи? Большое спасибо!
1 ответ
Хорошо, я решил это. что я сделал, так это option=webdriver.find_element_by_xpath(...), webdriver.execute_script("arguments[0].value='<sectionname>';",option)
, а затем запустить поиск, отправив ключи в текстовое поле, отправив ключ ENTER (по некоторым причинам, option.click()
не работает)