Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2021 18:38:42

beginner21
Зарегистрирован: 2021-02-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Selenium как выбрать из списка используя .select_by_index

Всем доброго времени суток! Не могу ни где найти почему через driver.find_element_by_link_text(u“.csv”).click() работает, а через.select_by_index выдает ошибку. Хотя на мой взгляд - должно работать. Бьюсь над этой частью…. Заранее благодарен за помощь!

<div class=“finam-ui-controls-select” style=“width: 135px;”>
<div class=“finam-ui-controls-select-title” style=“width: 112px;”>.csv</div>
<div class=“finam-ui-controls-select-arrow”></div>
</div>
<select id=“issuer-profile-export-file-ext” name=“e” style=“width: 135px; display: none;” class=“i-form-state-item”>
<option value=“.txt”>.txt</option>
<option value=“.csv”>.csv</option>
</select>


>>> element = driver.find_elements_by_class_name (“finam-ui-controls-select”)
>>> element.text
'.txt'
>>> element.click()
>>> driver.find_element_by_link_text(u“.csv”).click()
>>> element.text
'.csv'
>>> elem = Select(driver.find_element_by_id(“issuer-profile-export-file-ext”))
>>> for option in elem.options:
… print(option.get_attribute(“index”), option.get_attribute(“value”), option.get_attribute(“text”))
0 .txt .txt
1 .csv .csv
>>> elem.select_by_index('1')
>>> elem.select_by_index('0')

Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “C:\Python39\lib\site-packages\selenium\webdriver\support\select.py”, line 101, in select_by_index
self._setSelected(opt)
File “C:\Python39\lib\site-packages\selenium\webdriver\support\select.py”, line 212, in _setSelected
option.click()
File “C:\Python39\lib\site-packages\selenium\webdriver\remote\webelement.py”, line 80, in click
self._execute(Command.CLICK_ELEMENT)
File “C:\Python39\lib\site-packages\selenium\webdriver\remote\webelement.py”, line 633, in _execute
return self._parent.execute(command, params)
File “C:\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
self.error_handler.check_response(response)
File “C:\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <option> could not be scrolled into view

Офлайн

#2 Фев. 16, 2021 21:52:18

beginner21
Зарегистрирован: 2021-02-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Selenium как выбрать из списка используя .select_by_index

Привет всем кому интересен этот вопрос!
Но что то в эфире тишина…. Не пойму… Толи вопрос дурацкий и все берегут мою самооценку, толи “хороший вопрос” на который нет простого ответа.

Офлайн

#3 Фев. 17, 2021 00:56:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Selenium как выбрать из списка используя .select_by_index

Попробуй в метод .select_by_index() передать не строку

'1'
а число
1



Отредактировано py.user.next (Фев. 17, 2021 00:57:06)

Офлайн

#4 Фев. 17, 2021 12:19:32

beginner21
Зарегистрирован: 2021-02-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Selenium как выбрать из списка используя .select_by_index

Спасибо за ответ!
Результат тот же…

>>> elem = Select(driver.find_element_by_id(“issuer-profile-export-file-ext”))
>>> elem.select_by_index(1)
>>> elem.select_by_index(0)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “C:\Python39\lib\site-packages\selenium\webdriver\support\select.py”, line 101, in select_by_index
self._setSelected(opt)
File “C:\Python39\lib\site-packages\selenium\webdriver\support\select.py”, line 212, in _setSelected
option.click()
File “C:\Python39\lib\site-packages\selenium\webdriver\remote\webelement.py”, line 80, in click
self._execute(Command.CLICK_ELEMENT)
File “C:\Python39\lib\site-packages\selenium\webdriver\remote\webelement.py”, line 633, in _execute
return self._parent.execute(command, params)
File “C:\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
self.error_handler.check_response(response)
File “C:\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <option> could not be scrolled into view

Офлайн

#5 Фев. 17, 2021 12:47:53

beginner21
Зарегистрирован: 2021-02-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Selenium как выбрать из списка используя .select_by_index

Я так понимаю .select_by_ работает на <select class =……
на <select id=…. не работает. Он выводит список, но изменить его нельзя. Типа он скрыт за
<div class=
<div style=….
<ul>
<li>
<a href=“#” index=“0” value=“.txt” class=“”>.txt</a>
…..
…..
<a href=“#” index=“1” value=“.csv” style=“” class=“”>.csv</a>

при этом <div не является select и к нему через Select() не обратишься.
Так что думаю остановиться на работающей, хотя и медленно, зато наглядно.

element = driver.find_elements_by_class_name (“finam-ui-controls-select”)
element.click()
driver.find_element_by_link_text(u“.txt”).click()

Офлайн

#6 Фев. 17, 2021 12:50:19

beginner21
Зарегистрирован: 2021-02-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Selenium как выбрать из списка используя .select_by_index

Если ошибаюсь, то поправьте….
Ну вот и поговорил сам с собой…. Не помогло, но полегчало ;-)))
Всем удачного дня!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version