Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как сделать цикл выбора значения из выпадающих списков?

python
selenium
webdriver
Теги: #<Tag:0x00007f7b653cd380> #<Tag:0x00007f7b653cd240> #<Tag:0x00007f7b653cd100>

(Тест Тест) #1

Прошу помочь более профессиональных коллег, т.к. с автоматизацией только знакомлюсь. Есть форма с обязательными полями, которую должен заполнить юзер. На двух табах этой формы находятся по 8-12 выпадающих списков у которпых класс одинаковый class=“form-control”. Я хочу написать цикл который бы вибирал по value=“allow” значение с этого выпадающего списка. Как только незаполненных списков не остается происходит переключение на второй таб и дальше по тому же сценарию. Это пока все,что смогла написать:

def select_form_control_class(self, select_form_control_class):#select 1 drop down item
        if not select_form_control_class:
            return
        selects = self.driver.find_elements_by_css_selector(select_form_control_class)
        for select in selects:
            select = Select(select)
            select_it = select.select_by_value('allow')
            actions = ActionChains(self.driver)
            actions.drag_and_drop(select, select_it)
            actions.perform()

self.select_form_control_class('select.form-control')
self.driver.find_element_by_link_text('LOCATION').click()

(Bolatbek) #2

Для чего actions? Недостаточно select_by_value?


(Дмитрий Золкин) #3

Я просто писал метод который выбирает из списка по value. Параметрами были локатор select’а и само значение в виде текста. Вроде такого, что-то

> def select_from_list(self, locator, value):
>         try:
>             element = WebDriverWait(self.driver, 10).until(
>                 EC.presence_of_element_located(locator)
>             )
>             Select(element).select_by_visible_text(value)
>             angular_not_active()(self.driver)
>         except TimeoutException:
>             print u'Время пояления элемента списка истекло'