Selenium в Python - выпадающее меню - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь найти раскрывающийся элемент, чтобы я мог выбрать из него опцию, я видел, что у Selenium есть встроенный класс для работы с выпадающими меню выбора, однако я изо всех сил пытаюсь найти этот элемент. ,

Может кто-нибудь сказать мне, где я иду не так?

Элемент, который я пытаюсь найти

<div>
<label>Department<font color="red"><em>*</em></font></label>
<select name="department">
<option value="XXX">Select</option>
<option value="1">Department 1</option>
<option value="2">Department 2</option>
<option value="3">Department 3</option>
</div>

Что я пробовал

browser.find_element_by_xpath("//div[@label='Department']")
browser.find_element_by_xpath("//div[@name='Department']")

browser.find_element_by_xpath("//select[@label='Department']")
browser.find_element_by_xpath("//select[@name='Department']")

Нет радости - есть ли шанс, что кто-нибудь позвонит и скажет, где я иду не так?

Извинения за основной вопрос - новичок в селене и начинающий программист для загрузки.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

В вашем доме две точки имеют уникальную идентификацию, чтобы найти элемент выбора.

1.Один сам тег выбора имеет атрибут имени со значением «отдел». (маленький кейс)

 browser.find_element_by_name("department")

или

 browser.find_element_by_xpath("//select[@name ='department']")

или

 browser. find_element_by_css_selector("select[name='department']")

2.Другой является метка с innerText как 'Department' (title), которая является родственной из select

 browser.find_element_by_xpath("//label[text() = 'department']/following-sibling::select")
0 голосов
/ 01 ноября 2018

У меня была проблема из-за выбора / выпадающего меню внутри iframe. Спасибо Гаю за то, что он сказал мне проверить это.

Чтобы проверить, находится ли элемент в iframe, просто проверьте элемент веб-сайта и найдите включающий тег <iframe>.

После некоторого исследования, как это обойти, я решил свою проблему с помощью следующего кода.

iframe = browser.find_element_by_xpath("//iframe[@name='frame2']")
browser.switch_to_frame(iframe)
browser.find_element_by_xpath("//select[@name='department']")

Еще раз спасибо, Гай!

...