Python WEBDRIVER - я не могу выбрать элемент из списка и отправить свой ответ - PullRequest
1 голос
/ 17 февраля 2020

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

<select size="10" name="lbSources" id="lbSources" class="form" onkeypress="return OnKeyPressEnterSubmit('btnSearch', event);" style="width:250px;">
    <option value="UK_P">01 net</option>
    <option value="UKA_P">01 net - Hors-série</option>
    <option value="QAA_P">2 Rives, Les (Sorel-Tracy, QC)</option>
    <option value="WV_P">24 Heures (Suisse)</option>
    <option value="FJ_P">Abitibi Express Rouyn-Noranda/Abitibi-Ouest</option>
   (...)

и html кнопки поиска:

 <input type="image" name="btnSearch" id="btnSearch" src="/images/interface/buttons/SearchFR_on.gif" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;btnSearch&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))">

И вот как выглядит мой код Python:

selectBox = browser.find_element_by_name("lbSources")
selectBox.send_keys("UK_P")
browser.find_element_by_name("btnSearch").click()

Сначала он выбирает поле, но потом ... Ничего ..

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Вы можете использовать прямой xpath для выбора опции списка, а затем вызвать событие onkeypress в списке.

item = driver.find_element_by_xpath("//select[@id='lbSources']/option[@value='UK_P']")
# click on the list item
item.click()
# now trigger onKeyPress event
list_box = driver.find_element_by_xpath("//select[@id='lbSources']")
driver.execute_script("arguments[0].dispatchEvent(new Event('onkeypress', {'bubbles': true,'cancelable': true}));",list_box)
0 голосов
/ 17 февраля 2020

Используйте Выбрать класс, чтобы щелкнуть в раскрывающемся списке:

select = Select(driver.find_element_by_id('lbSources'))

# select by visible text
select.select_by_visible_text('UK_P')

# select by value 
select.select_by_value('1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...