Перейти к содержимому

Фотография

Selenium WebDriver - Не получается выбрать элемент в выпадающем меню

RobotFramework Selenium

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Kori

Kori

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Клочков Роман

Отправлено 20 июня 2019 - 14:31

Всем привет!

Столкнулся с проблемой пытаясь прокрутить выпадающий список. Точнее, не смог выбрать нужный элемент (например, год 2010)

Прикрепленный файл  table_2.png   24,51К   0 Количество загрузок:

код, который это реализует - 

<div class="v-menu__content menuable__content__active" style="min-width: 290px; top: 552px; left: 551px; transform-origin: left top; z-index: 204;">
	<div class="v-picker v-card v-picker--date">
		<div class="v-picker__body" style="width: 290px;">
			<div>
				<ul class="v-date-picker-years">
					<li class="">2029</li>
					<li class="">2028</li>
					...
					<li class="">2000</li>
				</ul>
			</div>
		</div>
	</div>
</div>

RobotFramework категорически отказывается скролить и кликать в нужный элемент, какой способ указания элемента не выбери - в RF не работает ни один из

Click Element //div[@id='app']/div/div/div/div/ul/li[20]
Click Element //li[contains(.,'2010')]
Click Element css=li:nth-child(20)

В каком-то случае ругается что 

ElementNotVisibleException: Message: element not interactable
в другом - 
ElementClickInterceptedException: Message: element click intercepted: Element <input aria-label="Год" readonly="readonly" type="text"> is not clickable at point (840, 535). Other element would receive the click: <div class="v-li
st__tile__content">...</div>

Когда пишет что "точка клика перекрыта" я конечно верю:

Прикрепленный файл  table_4.png   89,86К   2 Количество загрузок:

Команда Scroll Element Into View отлично работающая в обычных "выпадашках" тут ничего не скролит.

 

В Selenium IDE те же самые локаторы отлично работают: 

Прикрепленный файл  ide.png   9,02К   2 Количество загрузок:

 

IDE даже не проматывая список успешно выставляет значение. Не переживая, в видимой области оно находится или нет.

Скопированные в тест .robot команды перестают работать. В чём подвох?

 


  • 0

#2 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 24 июня 2019 - 16:37

Подвох в том, что IDE работает внутри браузера и может непосредственно общаться со страницей, а RF использует WebDriver, и для него некликабельный элемент - значит, некликабельный.

 

Если автоматическая прокрутка не работает, то придется делать прокрутку через вызов скрипта на странице. Не думаю, что все необходимые параметры для передачи в скрипт удобно готовить в роботе. Возможно, придется делать реализацию своих шагов на питоне.

 

Можно ещё сымитировать действия пользователя - навести мышку и прокрутить колёсиком. Но боюсь, таким образом позиционировать на правильный элемент еще сложнее.

 

Еще локаторы с div, конечно, малочитаемые. Сложно понять, тот ли элемент они находят. Если еще не видели, рекомендую посмотреть доклад.


  • 0

#3 Kori

Kori

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Клочков Роман

Отправлено 25 июня 2019 - 08:20

 

 

IDE работает внутри браузера и может непосредственно общаться со страницей, а RF использует WebDriver,

Спасибо, это многое обьясняет.

 

по итогам выяснилось, что

  1. В отличии остальных “выпадашек” данные для этой отсутствуют изначально в коде страницы, пока не делали клик в поле “год” . и пути с div/div работали нестабильно
  2. В отличии от остальных “выпадашек” элементы проходили проверку “wait visible” и “wait enable” но на попытку клика отвечали “not interactable” - полечилось “set focus”
  3. Даже после “set focus” не работал “Scroll Element Into View” и пришлось кликать в нужный год через “Execute Javascript”

  • 0



Темы с аналогичным тегами RobotFramework, Selenium

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных