Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/103: Рейтинг темы: голосов - 103, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 16.11.2013
Сообщений: 14

Selenium - выбор элемента из выпадающего списка

30.01.2020, 10:42. Показов 22029. Ответов 26

Студворк — интернет-сервис помощи студентам
Здравствуйте!

С помощью selenium пытаюсь на сайте выбрать элемент из выпадающего списка (см. id="DepartureLocations").

Получаю ошибку:
element not interactable: Element is not currently visible and may not be manipulated
Предварительный клик для раскрытия списка не помогает. Перебор sel.options показывает, что соответствующие строкам списка веб-элементы существуют, но при попытке кликнуть - та же ошибка.

Гугл ведет на аналогичные решения с Select или с перебором options.

Заранее благодарен за любую помощь.

Код прилагаю:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from selenium.webdriver.support.ui import Select
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
 
 
def start_browser():
    res = None
    try:
        options = webdriver.ChromeOptions()
        options.add_argument("--no-sandbox")
        # options.add_argument('headless')  # закомментируй, если хочется видеть браузер
        options.add_argument('--verbose')
        options.add_argument("--disable-dev-shm-usage")
        driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
        driver.set_page_load_timeout(60)
        res = driver
    except:
        pass
    return res
 
 
driver = start_browser()
driver.get("https://agency.pegast.ru/")
 
time.sleep(5)       # хардкодное ожидание
 
# клик по списку, чтобы раскрыть его (не помогает)
dep_list = driver.find_element_by_id('departure-location')
dep_list.click()
 
time.sleep(5)       # хардкодное ожидание
 
# находим select с выбором городов вылета
el = driver.find_element_by_id('DepartureLocations')
sel = Select(el)
 
# пытаемся выбрать хотя бы какой-то элемент...
try:
    sel.select_by_visible_text('Санкт-Петербург')
except Exception as e:
    print('err 1', e)
try:
    sel.select_by_index(10)
except Exception as e:
    print('err 2', e)
try:
    sel.select_by_value('Анапа_555')
except Exception as e:
    print('err 3', e)
Добавлено через 8 минут
Да, забыл сказать. Вижу, что к списку применено свойство style="display: none;" - и свойство это не меняется при наведении мыши или при клике. Полагаю, препятствие именно здесь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2020, 10:42
Ответы с готовыми решениями:

Selenium Python - выбор пустого элемента из выпадающего списка
Доброго времени суток! Вот уже второй день не могу разобраться с выпадающим списком... <thead> <tr><th...

Выбор данных из выпадающего списка Flask, MySQL
Приветствую, на данный момент пишу веб-приложение для заполнение документов по меткам. Сделал почти все осталось одно с чем справиться я...

Selenium выбор пункта меню из выпадающего списка
Добрый день, просьба помочь в решении задачи для Selenium нужно выбрать пункт меню в поле Paste Expiration на сайте public class...

26
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
28.03.2021, 16:24
Студворк — интернет-сервис помощи студентам
в документации Селениум или в любом туториале по нему. пжлст
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
29.03.2021, 12:36
Цитата Сообщение от Welemir1 Посмотреть сообщение
в документации Селениум или в любом туториале по нему. пжлст
такой: https://habr.com/ru/post/250921/
покатит?
и в чём я ошибаюсь сделал уже как там
Python
1
2
3
            elem_court_subj = browser.find_element_by_name('court_subj')
            print(elem_court_subj)
            elem_court_subj.send_keys(name)
ошибка та-же
Message: element not interactable
а вообще, для обработки ошибок в коде можно запросить elem_court_subj == interactable-интерактивный, как?
на всякий принт выдал:
<selenium.webdriver.remote.webelement.We bElement (session="dd5e1c84056a0760da17b5ab22fcbc 06", element="aace3e62-ad5d-4bdc-b552-144b727217a1")>
спс
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
29.03.2021, 16:19
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
покатит?
нет. пока не научишься искать официальную документацию или книги по предмету - толку не будет. Ну и сделай уже что-то с формулировкой вопросов -ничего же не понятно.
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
30.03.2021, 09:18
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
такой: https://habr.com/ru/post/250921/
покатит?
ну да там чёрным по белому написано-Продолжение перевода неофициальной документации Selenium для Python
а такой: https://selenium-python.readth... ments.html
покатит?
Цитата Сообщение от Welemir1 Посмотреть сообщение
Ну и сделай уже что-то с формулировкой вопросов -ничего же не понятно.
пробую
сейчас проблема
как мне в поле выбора Субъект Российской Федерации ввести
87 = Чукотский автономный округ
и нажать кнопку Найти? спс

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
url0 = r'https://sudrf.ru/index.php?id=300#sp'
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--start-maximized')
chromedriver = r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'
browser = webdriver.Chrome(executable_path=chromedriver, options=chrome_options)
browser.get(url0)
time.sleep(5)  # хардкодное ожидание
link = browser.find_elements_by_link_text('расширенный поиск')  # print(link) print(len(link))
if len(link) == 1: browser.find_element_by_link_text('расширенный поиск').click()  # нажать ссылку
time.sleep(3)  # хардкодное ожидание
from selenium.webdriver.support.ui import Select
# select = Select(browser.find_element_by_id('court_subj')), ниже ещё вариант, поиска через xpath
select = Select(browser.find_element_by_xpath('//*[@id="court_subj"]'))
all_names = [(e.get_property('value'), e.get_attribute('label')) for e in select.options]
for ind, name in all_names:
    if ind == '0':
        print(f'{ind} - чтобы не вводить данные в поле ввода субъекта')
    else:
        print(f'{ind} - для ввода субъекта: {name}')
 
input_court_subj = input(f'''Введите число - обозначение нужного субъекта Российской Федерации
для ввода в поле Субъект Российской Федерации
и нажмите Enter''')
 
if input_court_subj != '0':
    for ind, name in all_names:
        if ind == input_court_subj:
            print(f'''Введено число: {ind} = {name}''')
            elem_court_subj = browser.find_element_by_xpath('//*[@id="court_subj"]')
            print(elem_court_subj)
            elem_court_subj.send_keys(name)
            break
    else:
        print(f'''Введённое число: {input_court_subj}
отсутствует в обозначениях нужного субъекта Российской Федерации
для ввода в поле Субъект Российской Федерации на сайте: {url0}
что является ошибкой, программа далее не будет продолжаться''')
        exit(0)
на строке elem_court_subj.send_keys(name) ошибка element not interactable
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
для обработки ошибок в коде можно запросить elem_court_subj == interactable-интерактивный, как?
Добавлено через 25 минут
блин туплю - это же поле выбора, как выбирать, а не вводить?

Добавлено через 25 минут
сделал так:
Python
1
browser.find_element_by_xpath(f'//*[@id="court_subj_cd"]/option[{ind}]').click()
но получил ошибку
Element is not currently visible and may not be manipulated-Элемент в настоящее время не отображается и не может быть изменен
скажите в чём я ошибаюсь? спс
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
30.03.2021, 10:04
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
скажите в чём я ошибаюсь? спс
во всем, сколько раз повторять -в программировании методом тыка и тысяч вопросов на форуме ничего у тебя не выйдет!!! Ну не дается тебе этот предмет, причем исключительно из-за твоего нежелания искать и читать информацию (не в сомнительных источниках!).

Ты же просто топчешься на месте, даже не пытаясь осилить например технику поиска локаторов. На этом сайте (не знаю уж для защиты или еще чего) созданы дубликаты форм, причем именно вторая форма настоящая, первая -фейк, потому ты не можешь кликнуть. Чтобы это узнать -достаточно было в браузере найти локатор и увидеть что результат не 1, а 2. Почему ты этого не сделал? Какаой смысл что-то изучать задавая вопросы и ничему не учась?

Python
1
2
3
4
5
6
7
>>> url='https://sudrf.ru/index.php?id=300#sp'
>>> from selenium import webdriver
>>> d= webdriver.Chrome()
>>>d.get(url)
>>> from selenium.webdriver.support.ui import Select
>>> select = Select(d.find_element_by_xpath('(//select[@id="court_subj"])[2]'))
>>> select.select_by_visible_text('Чукотский автономный округ')
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
30.03.2021, 10:29
Цитата Сообщение от Welemir1 Посмотреть сообщение
select = Select(d.find_element_by_xpath('(//select[@id="court_subj"])[2]'))
спасибо большое можете пояснить, цифра 2 это что? я подумал, что это опция у Чукотский автономный округ
но у него
HTML5
1
<option value='87'>Чукотский автономный округ</option>
вот и не понятно пока........
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
30.03.2021, 10:38
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
можете пояснить, цифра 2 это что?
ты что не читаешь что я пишу? я для кого стараюсь то?
Цитата Сообщение от Welemir1 Посмотреть сообщение
На этом сайте (не знаю уж для защиты или еще чего) созданы дубликаты форм, причем именно вторая форма настоящая, первая -фейк, потому ты не можешь кликнуть. Чтобы это узнать -достаточно было в браузере найти локатор и увидеть что результат не 1, а 2.
вот мы и берем второй, который настоящий
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2021, 10:38

Выбор элемента из выпадающего списка
Вот такой код списка&lt;span autocomplete=&quot;off&quot; data-nb-direction=&quot;bottom&quot; data-nb=&quot;select&quot; tabindex=&quot;0&quot; class=&quot;nb-button _nb-normal-button...

Выбор случайного элемента из выпадающего списка
Итак, на листе &quot;Тест&quot; в ячейке &quot;А1&quot; я создал выпадающий список. Значения для этого списка берутся из именованного диапазона...

Выбор элемента выпадающего списка ComboBox
В ComboBox есть список Items, изменил свойства: comboBox1.DropDownStyle = ComboBoxStyle.Simple; ...

Выбор элемента из выпадающего списка с последующей вставкой в документ Word
Здравствуйте! Подскажите пожалуйста, как из выпадающего списка, с набором фамилий, при щелчке на какую-либо фамилию, вставить эту фамилию в...

Выбор из выпадающего списка
Выпадающий список формируется из бд.мне нужно,чтобы пользователь выбрал фамилию а в бд сохранялся id. Как это сделать? &lt;td&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru