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

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

30.01.2020, 10:42. Показов 21730. Ответов 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
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
31.01.2020, 11:18
Maldoror,
Цитата Сообщение от Maldoror Посмотреть сообщение
что к списку применено свойство style="display: none;"
да, это их защита) нужно или удалять свойство или пробовать джаваскриптом кликнуть/выбрать
1
1 / 1 / 0
Регистрация: 02.02.2020
Сообщений: 18
02.02.2020, 13:11
замени 40 строку на это
Python
1
elem_0 = driver.find_element_by_xpath('//ul[@class="selectBox-dropdown-menu selectBox-options selectBox-selectBox-dropdown-menu ddrDepartureLocations-selectBox-dropdown-menu"]/li/a[@rel="Санкт-Петербург_411"]').click()
Добавлено через 6 минут
xpath может быть короче "//li/a[@rel="Санкт-Петербург_411"]" но выше я привёл почти полный путь к элементу.
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
23.03.2021, 08:38
здравствуйте, так и не понял, как получить список городов:
Москва
Санкт-Петербург
Абакан
Анапа
Архангельск
Астрахань
Барнаул
Белгород
Благовещенск
Братск
Брянск
Владивосток
Владикавказ
Волгоград
Воронеж
Геленджик
Грозный
Екатеринбург
Ижевск
Иркутск
Казань
Калининград
Калуга
Кемерово
Киров
Краснодар
Красноярск
Липецк
Магадан
Магнитогорск
Махачкала
Минеральные Воды
Мурманск
Нальчик
Нижневартовск
Нижнекамск
Нижний Новгород
Новокузнецк
Новосибирск
Омск
Оренбург
Орск
Пермь
Петропавловск-Камчатский
Ростов-на-Дону
Самара
Саратов
Симферополь
Сочи
Ставрополь
Сургут
Сыктывкар
Томск
Тюмень
Улан-Удэ
Ульяновск
Уфа
Хабаровск
Ханты-Мансийск
Чебоксары
Челябинск
Чита
Южно-Сахалинск
Якутск
Ярославль
спс
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
25.03.2021, 12:33
я пробовал правда не на этой странице
Python
1
2
court_subj_options = browser.getOptions('court_subj')
print(court_subj_options)
получил ошибку
'WebDriver' object has no attribute 'getOptions'
скажите в чём я ошибаюсь? спс
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
25.03.2021, 12:53
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
скажите в чём я ошибаюсь?
интерпретатор тебе четко написал в чем. Ты в курсе например такой команды как dir? Как ты вообще узнаешь какие атрибуты есть у объекта? наугад?

Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
здравствуйте, так и не понял, как получить список городов:
не удивительно, это ж надо доку селениума прочесть

Python
1
2
3
4
5
6
7
8
9
>>> from selenium import webdriver
>>> d=webdriver.Chrome()
>>> d.get("https://agency.pegast.ru/")
>>> d.find_element_by_css_selector('a.departure-selector__trigger').click()
>>> cities = d.find_elements_by_css_selector('a.departure-selector__city>span')
>>> names = [e.text for e in cities]
>>> names
['Москва', 'Санкт-Петербург', 'Абакан', 'Анапа', 'Архангельск', 'Астрахань', 'Барнаул', 'Белгород', 'Благовещенск', 'Братск', 'Владивосток', 'Владикавказ', 'Волгоград', 'Воронеж', 'Геленджик', 'Грозный', 'Екатеринбург', 'Ижевск', 'Иркутск', 'Казань', 'Калининград', 'Калуга', 'Кемерово', 'Киров', 'Краснодар', 'Красноярск', 'Липецк', 'Магадан', 'Магнитогорск', 'Махачкала', 'Минеральные Воды', 'Мурманск', 'Нальчик', 'Нижневартовск', 'Нижнекамск', 'Нижний Новгород', 'Новокузнецк', 'Новосибирск', 'Новый Уренгой', 'Омск', 'Оренбург', 'Орск', 'Пермь', 'Петропавловск-Камчатский', 'Ростов-на-Дону', 'Самара', 'Саратов', 'Симферополь', 'Сочи', 'Ставрополь', 'Сургут', 'Сыктывкар', 'Томск', 'Тюмень', 'Улан-Удэ', 'Ульяновск', 'Уфа', 'Хабаровск', 'Ханты-Мансийск', 'Чебоксары', 'Челябинск', 'Чита', 'Южно-Сахалинск', 'Якутск', 'Ярославль']
>>> d.quit()
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
25.03.2021, 13:11
Цитата Сообщение от Welemir1 Посмотреть сообщение
это ж надо доку селениума прочесть
ну так читал, скажите, а getOptions к какому объекту применим? спс
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
25.03.2021, 13:43
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ну так читал,
тогда чего не справился с задачей?

Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
а getOptions к какому объекту применим?
естественно к тому объекту, у которого такой атрибут есть. Я таких не знаю. Тут скорее к тебе вопрос -откуда ты взял что такой метод должен быть?
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
26.03.2021, 07:53
Цитата Сообщение от Welemir1 Посмотреть сообщение
откуда ты взял что такой метод должен быть?
отсюда
http://internetka.in.ua/selenium-driver-select/

Добавлено через 20 минут
Цитата Сообщение от Welemir1 Посмотреть сообщение
d.find_element_by_css_selector('a.depart ure-selector__trigger').click()
очень странно, что без этой строки не обойтись, хочу кликаю, хочу нет............
чтобы узнать все варианты в поле выбора эта строка здесь причём?

Добавлено через 17 минут
мистика какя-то, откуда взялось
a.departure-selector
если его нет на странице, а есть
departure-selector
???
a.-сами добавили? ясновидение....
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
26.03.2021, 08:11
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
отсюда
все настолько плохо, да? мало того что там не питон, а джава, так там еще и написано select.getOptions()
Как ты полагаешь браузер и селект должны иметь одинаковые атрибуты?

Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
a.-сами добавили?
то есть ты еще и не в курсе как в верстке страницы смотреть локаторы элементов? тогда чего говоришь что читал доку? любая книга и туториал по селениуму начинается с рассказа о том как получать локаторы.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
26.03.2021, 08:11
Цитата Сообщение от Welemir1 Посмотреть сообщение
>>> d.find_element_by_css_selector('a.depart ure-selector__trigger').click()
>>> cities = d.find_elements_by_css_selector('a.depar ture-selector__city>span')
и это на мой взгляд магия, в одном случае
'a.departure-selector__trigger'
в другом случае
'a.departure-selector__city>span'
как гадание.......
я пробовал find_element_by_id, получил ошибку
element not interactable-элемент не взаимодействующий
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
26.03.2021, 08:12
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
в одном случае
'a.departure-selector__trigger'
потомучто это кнопка

Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
в другом случае
'a.departure-selector__city>span'
а это спаны в которых лежат имена городов
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
26.03.2021, 08:19
спс за ваши ответы, видимо мне не справиться, по аналогии хотел сделать с agency.pegast.ru
подскажите пжл как у поля Субъект Российской Федерации:
узнать номера и имена всех опций этого поля, предложить инпутом ввести номер нужного субъекта, чтобы согласно номера ввёлся субъект
на сайте https://sudrf.ru/index.php?id=300#sp
спс
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
27.03.2021, 17:06
Цитата Сообщение от Welemir1 Посмотреть сообщение
в одном случае
'a.departure-selector__trigger'
потомучто это кнопка
Сообщение от Ципихович Эндрю
в другом случае
'a.departure-selector__city>span'
скажите, а в моём случае, если в вручную смотреть то искомого 4-ре
1-е
HTML5
1
2
3
<td style='padding: 5px 10px 5px 0; vertical-align: top;'>Субъект Российской Федерации:&nbsp;</td>
                    <td style='padding: 5px 0 5px 0; vertical-align: top;'>
                        <select id='court_subj_cd' name='court_subj' style='width:490px;' onchange='getSuds(this.value)'>
2-е
HTML5
1
2
3
<td style='padding: 5px 10px 5px 0; vertical-align: top;'>Субъект Российской Федерации:&nbsp;</td>
                    <td style='padding: 5px 0 5px 0; vertical-align: top;'>
                        <select id='court_subj_cd' name='court_subj' style='width:490px;' onchange='getSuds(this.value)'>
3-е
HTML5
1
2
3
<td style='padding: 5px 10px 5px 0; vertical-align: top;'>Субъект Российской Федерации:&nbsp;</td>
                    <td style='padding: 5px 0 5px 0; vertical-align: top;'>
                        <select id='court_subj' OnChange='change_court_subj(this.value)' name='court_subj' style='width:490px;'>
4-е
HTML5
1
2
3
<td style='padding: 5px 10px 5px 0; vertical-align: top;'>Субъект Российской Федерации:&nbsp;</td>
                    <td style='padding: 5px 0 5px 0; vertical-align: top;'>
                        <select id='court_subj' name='court_subj' style='width:490px;' onchange='getSuds(this.value)'>
и как быть, куда бежать)), как это будет в коде выглядеть? спс
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
27.03.2021, 18:56
бежать к тому, кто сможет сформулировать вопрос, я не понимаю.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
27.03.2021, 19:04
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
подскажите пжл как у поля Субъект Российской Федерации:
узнать номера и имена всех опций этого поля, предложить инпутом ввести номер нужного субъекта, чтобы согласно номера ввёлся субъект
на сайте https://sudrf.ru/index.php?id=300#sp
например инпут:
Введите нужный субъект Российской Федерации:
ниже список, например:
50 для ввода субъекта Московская область
51 для ввода субъекта Мурманская область
(нужен полный) спс
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
27.03.2021, 19:50
Ципихович Эндрю, и эта тема, как и череда предыдущих вам тоже не дается.

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
>>> from selenium import webdriver
>>> d= webdriver.Chrome()
>>> d.get('https://sudrf.ru/index.php?id=300#sp')
>>> from selenium.webdriver.support.ui import Select
>>> select  =Select(d.find_element_by_id('court_subj'))
>>> all_names=[(e.get_property('value'), e.get_attribute('label')) for e in select.options]
>>> for ind, name in all_names:
...     print(f'{ind}.{name}')
...
0.
22.Алтайский край
28.Амурская область
29.Архангельская область
30.Астраханская область
31.Белгородская область
32.Брянская область
33.Владимирская область
34.Волгоградская область
35.Вологодская область
36.Воронежская область
77.Город Москва
78.Город Санкт-Петербург
92.Город Севастополь
79.Еврейская автономная область
75.Забайкальский край
37.Ивановская область
38.Иркутская область
07.Кабардино-Балкарская Республика
39.Калининградская область
40.Калужская область
41.Камчатский край
09.Карачаево-Черкесская Республика
42.Кемеровская область
43.Кировская область
44.Костромская область
23.Краснодарский край
24.Красноярский край
45.Курганская область
46.Курская область
47.Ленинградская область
48.Липецкая область
49.Магаданская область
50.Московская область
51.Мурманская область
83.Ненецкий автономный округ
52.Нижегородская область
53.Новгородская область
54.Новосибирская область
55.Омская область
56.Оренбургская область
57.Орловская область
58.Пензенская область
59.Пермский край
25.Приморский край
60.Псковская область
01.Республика Адыгея
02.Республика Алтай
03.Республика Башкортостан
04.Республика Бурятия
05.Республика Дагестан
06.Республика Ингушетия
08.Республика Калмыкия
10.Республика Карелия
11.Республика Коми
91.Республика Крым
12.Республика Марий Эл
13.Республика Мордовия
14.Республика Саха (Якутия)
15.Республика Северная Осетия-Алания
16.Республика Татарстан
17.Республика Тыва
19.Республика Хакасия
61.Ростовская область
62.Рязанская область
63.Самарская область
64.Саратовская область
65.Сахалинская область
66.Свердловская область
67.Смоленская область
26.Ставропольский край
68.Тамбовская область
69.Тверская область
70.Томская область
71.Тульская область
72.Тюменская область
18.Удмуртская Республика
73.Ульяновская область
27.Хабаровский край
86.Ханты-Мансийский автономный округ - Югра (Тюменская область)
74.Челябинская область
20.Чеченская Республика
21.Чувашская Республика - Чувашия
87.Чукотский автономный округ
89.Ямало-Ненецкий автономный округ
76.Ярославская область
95.Территории за пределами РФ
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
27.03.2021, 19:52
Цитата Сообщение от Welemir1 Посмотреть сообщение
как и череда предыдущих вам тоже не дается
в оконцовке все поддались, спс, изучу..............
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
27.03.2021, 19:59
Ципихович Эндрю, в какой оконцовке? осмелюсь вам не поверить, проблема всегда одна и та же -ничего не читаете путнего или из документации, зато смотрите какие то статейки 5 летней давности, да еще и косвенно относящиеся к делу. Есть документация -начинать надо всегда с нее. И тогда все начинает получаться.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
28.03.2021, 15:34
Цитата Сообщение от Welemir1 Посмотреть сообщение
ничего не читаете путнего или из документации, зато смотрите какие то статейки 5 летней давности, да еще и косвенно относящиеся к делу
тут соглашусь, спс, взлетело
двигаюсь далее, хочу введённое юзером число - input_court_subj вставлять в поле выбора его name
Python
1
2
3
4
5
for ind, name in all_names:
    if ind == input_court_subj:
        print(f'''Введено число: {ind} = {name}''')
        d.find_element_by_id('court_subj').send_keys(name)
        break
опять Message: element not interactable-Сообщение: элемент не взаимодействует
читал, не приснилось же мне это)) где почитать? спс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2021, 15:34
Помогаю со студенческими работами здесь

Выбор элемента из выпадающего списка
Вот такой код списка&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;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru