Python выбор селена из раскрывающегося списка по тексту - PullRequest
0 голосов
/ 28 мая 2020

У меня есть веб-процесс, который я пытаюсь автоматизировать. HTML выглядит следующим образом:

<td class="v-formlayout-contentcell">
<div class="v-select v-widget v-has-width" id="gwt-uid-46" aria-labelledby="gwt-uid-45" style="width: 225px;">
 <select class="v-select-select" size="1" tabindex="0" style="width: 225px;">
 <option value="null"></option><option value="1">21/24 Long Term Auction Credit Study</option><option value="2">21/24 Long Term Auction</option></select></div></td>

Я всегда знаю, какие у меня варианты из раскрывающегося списка.

Если я знаю, какой вариант нужно выбрать, есть ли способ выберите это на основе текста опции. В этом примере я хочу выбрать 21/24 Long Term Auction Credit Study.

Я не могу использовать id = "gwt-uid-46", так как боюсь, что это может легко измениться.

Изменить: я заметил в HTML, что есть другой класс с именем class="v-select-select". Итак, ни один из опубликованных ответов пока не работает, поскольку он находит этот класс вместо того, который меня интересует.

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Для выбора <option> с текстом 21/24 Long Term Auction Credit Study с использованием Selenium и из списка вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать следующие стратегии локатора :

  • CSS_SELECTOR:

    select = Select(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "select.v-select-select"))))
    select.select_by_visible_text("21/24 Long Term Auction Credit Study")
    
  • XPATH:

    select = Select(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//select[@class='v-select-select']"))))
    select.select_by_visible_text("21/24 Long Term Auction Credit Study")
    
  • Примечание : необходимо добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import Select
    

Ссылка

Вы можете найти пару соответствующих обсуждений в:

0 голосов
/ 28 мая 2020

из selenium.webdriver.support.ui import Выберите

select = Select(WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.Class_name,"v-select-select"))
select.select_by_visible_text("21/24 Long Term Auction Credit Study")
or 
select.select_by_value("1")
...