@vante_scribaxxi

Как в selenium найти элемент select по тексту одного из его option?

В общем есть одна страница, а на ней select. После выбора элемента динамически рисуются еще несколько select-элементов. И так далее. В скрипте варианты выбора хранится в массиве - [select1,select2,select3...], в виде значения одного из option данного select'а, то-есть:
<select name='par[3345]'>
  <option>Квартира</option>
  <option>Дом</option>
</select>
<select name='par[4212]'>
  <option>Куплю</option>
  <option>Продам</option>
</select>

В скрипте:
mas=["Дом","Продам"]
Проблема в том, что не имея статичных атрибутов очень проблематично искать подходящие select'ы, плюс ко всему после выбора нужного варианта, может создаться еще > 1 select'а, что решается вложенным массивом:
["Дом","Продам",["Кирпичный","2 этажа","200кв.м"]]
при условии, что поиск нужного select'а будет искаться по одному из его вариантов(option)! Как решить такую проблему, таким образом?
  • Вопрос задан
  • 553 просмотра
Решения вопроса 2
LazyTalent
@LazyTalent
Data Engineer, Freelancer
selects = driver.find_elements_by_tag_name('select')
need_select = None
condition = 'Кирпичный'
for select in selects:
    options = select.find_elements_by_tag_name('option')
        for opt in options:
            if opt.text == condition:
                need_select = select
Ответ написан
Комментировать
Используйте оси, и стройте более сложный xpath.
Например в вашем случае будет так
"//option[contains(text(), 'Продам')]/parent::select"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы