Выберите раскрывающийся список с помощью Python + Selenium - PullRequest
0 голосов
/ 24 июня 2018

Я пишу автоматизацию для работы и застрял с раскрывающимся списком.Конкретное поле выбора выглядит следующим образом:

<span class="a-dropdown-container" id="select-size-bulk-asin">
    <select name="display_type" class="a-native-dropdown">
        <option value="SMALL-IMAGES">SMALL-IMAGES</option>
        <option value="LARGE-IMAGES">LARGE-IMAGES</option>
        <option value="TEXT">TEXT</option>
    </select>

    <span tabindex="-1" data-a-class="a-spacing-small" class="a-button a-button-dropdown a-spacing-small">
        <span class="a-button-inner">
        <span class="a-button-text a-declarative" data-action="a-dropdown-button" aria-haspopup="true" role="button" tabindex="0" aria-pressed="false" aria-owns="2_dropdown_combobox">
        <span class="a-dropdown-prompt">SMALL-IMAGES</span>
        </span>
        <i class="a-icon a-icon-dropdown"></i>
        </span>
        </span>
    </span>

По умолчанию используется «МАЛЫЕ ИЗОБРАЖЕНИЯ», и я хотел бы выбрать параметр «ТЕКСТ».Я получаю элемент не кликабельная ошибка.Страница проста, и элемент виден на экране.

Список методов, которые я пробовал:

  • Использовал WebDriverWait для ожидания отображения элемента;
  • Использовал WebDriverWait для ожидания кликабельности элемента;
  • Использовал класс выбора для установки выбранной опции;
  • Я также прочитал вопрос.

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

ПРИМЕЧАНИЕ: - Я использую Python 3 и Chrome.

1 Ответ

0 голосов
/ 24 июня 2018

Вы можете попробовать этот код, чтобы выбрать значение из выпадающего списка:

select = Select(driver.find_element_by_id('select-size-bulk-asin'))
select.select_by_visible_text('TEXT')  

Однако, как вы упомянули, вы получаете исключение для элемента, не активируемого кликом. Вы можете попробовать этот код:

WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.ID, "select-size-bulk-asin")))

В крайнем случае вы можете продолжить:

drop_down= driver.find_element_by_id("select-size-bulk-asin")
drop_down.click()

actions = ActionChains(driver)
actions.send_keys(Keys.ARROW_DOWN)
actions.send_keys(Keys.ARROW_DOWN)
actions.send_keys(Keys.ENTER)
actions.perform()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...