Найти - Пользователи
Полная версия: Selenium как выбрать из списка используя .select_by_index
Начало » Python для новичков » Selenium как выбрать из списка используя .select_by_index
1
beginner21
Всем доброго времени суток! Не могу ни где найти почему через 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

beginner21
Привет всем кому интересен этот вопрос!
Но что то в эфире тишина…. Не пойму… Толи вопрос дурацкий и все берегут мою самооценку, толи “хороший вопрос” на который нет простого ответа.
py.user.next
Попробуй в метод .select_by_index() передать не строку
'1'
а число
1
beginner21
Спасибо за ответ!
Результат тот же…

>>> 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
beginner21
Я так понимаю .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()
beginner21
Если ошибаюсь, то поправьте….
Ну вот и поговорил сам с собой…. Не помогло, но полегчало ;-)))
Всем удачного дня!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB