Python Selenium выберите элемент из выпадающего списка поиска ajax - PullRequest
0 голосов
/ 28 мая 2019

Я только начал использовать Selenium с Python на сервере Ubuntu.Я открываю драйвер следующим образом:

 options = Options()
 options.headless = True
 driver = webdriver.Firefox(options=options)

Мне нужно заполнить значение в поле, однако это поле нельзя редактировать напрямую.В браузере мне нужно щелкнуть раскрывающийся список, чтобы он вызывал некоторые xhr-запросы для его заполнения (# select2-result-label-37 - это идентификатор нужной мне опции).Раскрывающийся список - это div со списком неупорядоченных номеров, который заполнен ответом на запрос.

html элемента раскрывающегося списка:

<div class="select2-container size_selection" id="s2id_ad_dimensions">
    <a href="javascript:void(0)" class="select2-choice select2-default" tabindex="-1"> <span class="select2-chosen" id="select2-chosen-1">Select Dimensions</span>
        <abbr class="select2-search-choice-close"></abbr> 
        <span class="select2-arrow" role="presentation">
            <b role="presentation"></b>
        </span>
    </a>
    <label for="s2id_autogen1" class="select2-offscreen right inline">Ad Dimensions</label>
    <input class="select2-focusser select2-offscreen" type="text" aria-haspopup="true" role="button" aria-labelledby="select2-chosen-1" id="s2id_autogen1">
</div>

При тестировании в консоли браузера я могувыберите элемент следующим образом:

 document.querySelector('#s2id_ad_dimensions > a');

Когда я нажимаю «href» в браузере, он начинает загрузку выпадающего списка, затем, после его загрузки, я могу щелкнуть один из параметров и заполнить его.Но когда я пытаюсь:

 document.querySelector('#s2id_ad_dimensions > a').click();

Он не делает никаких запросов или с Selenium:

 driver.find_element(By.CSS_SELECTOR, '#s2id_ad_dimensions > a').click()
 WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,\
         '#select2-result-label-37'))).click()

Возвращает

 raise TimeoutException(message, screen, stacktrace)
 selenium.common.exceptions.TimeoutException: Message:

Что я делаюнеправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...