Питон селен |Как получить все значения из выпадающего списка, используя индекс, сложную структуру выпадающего списка - PullRequest
0 голосов
/ 17 апреля 2019

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

Я попробовал следующий код

try:
    element = find_element_by_locator(self, locator_type, locator)
    print " -- Drop Down available values :"
    for option in element.find_elements_by_tag_name('option'):
        print " -- ", option.text
        if option.text in select_text_option:
            option.click()
except TimeoutException:
    ex_message = " ** failed to get drop down value for " , select_text_option
    print ex_message
    raise Exception(ex_message)

Я получаю нулевое значение как вывод:

<select chosendataplaceholder="Choose Finance Product" class="chosen-select-width" error_target_sel="#evo_lead_evo_finance_product_id_err" name="evo_lead_evo_finance_product_id" data-placeholder="Choose Finance Product" style="display: none;">
  <option selected="" value="1">Novated Finance Lease - Allowed</option>
  <option value="2">Finance Lease - Not Allowed</option>
  <option value="3">Novated Operating Lease - Not Allowed</option>
  <option value="7">Chattel Mortgage - Not Allowed</option>
  <option value="9">Consumer Loan - Not Allowed</option>
  <option value="10">Associate Lease - Not Allowed</option>
  <option value="11">No Finance (Car Only) - Not Allowed</option>
</select>

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

Ответы [ 3 ]

0 голосов
/ 17 апреля 2019

Правильный способ обработки выпадающего списка <select> - Select класс

element = find_element_by_name('evo_lead_evo_finance_product_id')
select = Select(element)

# select an option by text
select.select_by_visible_text(select_text_option)

# get all options text
for option in select.options:
    print " -- ", option.text
0 голосов
/ 17 апреля 2019

Вместо имени тега вы можете попробовать этот xpath, хотя он работает в моей системе:

dropdown_elements = driver.find_elements_by_xpath("//select[@name='evo_lead_evo_finance_product_id']/option")
for element in dropdown_elements:
 print(element.text)  

Надеюсь, это поможет.

0 голосов
/ 17 апреля 2019

Для получения текста всех опций используйте следующий код:

listele = driver.find_element_by_xpath("//*[@name='evo_lead_evo_finance_product_id']/option")

for i  in range(len(listele)):
    print(listele[i].text)
...