t.me/atinfo_chat Telegram группа по автоматизации тестирования

WebElement виден, доступен, в фокусе - но не кликается

Теги: #<Tag:0x00007fd771475e50> #<Tag:0x00007fd771475d38>

Столкнулся с проблемой пытаясь прокрутить выпадающий список


код реализации такой

<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>

кусок теста

    Scroll Element Into View                        //li[contains(text(),'2009')]
    Set Focus To Element                            //li[contains(text(),'2009')]
    Wait Until Element Is Visible                  //li[contains(text(),'2009')]
    Wait Until Element Is Enabled               //li[contains(text(),'2009')]

проходит на ура, но как только пытаюсь кликнуть в “2009”, получаю

ElementClickInterceptedException: Message: element click intercepted: Element <li class="active primary--text">...</li> is not clickable at point (865, 576). Other element would receive the click: <strong class="accent--text">...</strong>

Да и визульно вижу, что ничего не скролиться

Отдельно огорчает, что на очень похожем выпадающем меню всё работает


реализован так

<div class="v-menu__content v-autocomplete__content autocomplete-overflow menuable__content__active" style="max-height: 300px; min-width: 602px; top: 336px; left: 461px; transform-origin: left top; z-index: 204;">
	<div class="v-select-list v-card">
		<div class="v-list">
			<div>
				<a class="v-list__tile v-list__tile--link">
					<div class="v-list__tile__content">
						<div class="v-list__tile__title">Тестовая базовая модель №1</div>
					</div>
				</a>
			</div>
			<div>
				<a class="v-list__tile v-list__tile--link">
					<div class="v-list__tile__content">
						<div class="v-list__tile__title">Тестовая базовая модель №2</div>
					</div>
				</a>
				...
				<a  Тестовая базовая модель №146 </a>
			</div>
		</div>
	</div>
</div>

и тест

    Scroll Element Into View                   //div[contains(text(),'Тестовая базовая модель №146')]
    Click Element                                   //div[contains(text(),'Тестовая базовая модель №146')]

Отлично работает.
Вижу, что код слегка отличается, но почему не работает “Scroll Element Into View” понять не могу

вам же говорят, что другой элемент отвечает на клик

посмотрите, что это за элемент, может надо реально на него нажимать, или удалять его


Да, когда я пытаюсь кликать на элемент, который не удалось отскролить в видимую область (на скриншоте это элементы >2019 и <2012) программа логично говорит что я попадаю в другой элемент…
Вопрос почему “Scroll Element Into View” не скролит запрашиваемый элемент в видимую область, как в похожем выпадающем меню.

Для начала нужно перевести фокус на скролящийся дропдаун а потом скролить.

добавил

Set Focus To Element    |  //li[contains(text(),'2009')]/ancestor::div[@class="v-picker v-card v-picker--date"]/div/descendant::ul

ничего не поменялось.
Осознал, что судя по всему это не выпадающее меню, а календарь - даже контекстный курсор там “кнопочный”, а не “поле ввода”. но как подтягивать элементы в область видимости понятней не стало

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

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