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

Прокрутка элемента страницы до невидимого элемента Java+Selenide

Теги: #<Tag:0x00007f748c871c90> #<Tag:0x00007f748c871b78> #<Tag:0x00007f748c871a60> #<Tag:0x00007f748c871998>

И снова здравствуйте.
Есть страница, на ней три “слоя” областей, на самой верхней (локатор самой панели известен, если это важно) есть полоса прокрутки и невидимый, необходимый мне, элемент-кнопка. Прокрутку делаю сразу до нижнего из необходимых элементов

Пользуясь справочником классов на сайте с документацией по селенид, определила, что функция скролла до элемента должна выглядеть как-то так:

 $x("//span[contains(text(), 'Кнопка')]").scrollTo();

Но что-то идёт не так, и результатов работа этой функции не приносит. Ошибок нет, кроме как “Element should be visible …(и дальше локатор одного из скрытых элементов)”.
Не могу разобраться, что надо, чтобы скроллился только определённый элемент страницы? Можно назвать его модульным окном, например. Проверила вручную - скролл действительно работает не всегда, а только если мышь именно на этом окне. Как указать, что скроллить именно это окно надо?

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

это я к тому, что сам по себе скролл делать не надо, если вы правильно написали локатор

Я боюсь, что такой селектор находит все элементы, внутри которых есть текст “Кнопка”, а таких много. Попробуйте лучше

$(byText("Кнопка")).scrollTo();

И да, как сказали в предыдущем ответе, возможно, скролл вообще не нужен. Клик и без него должен сработать.

Через консоль искала локатор, он один такой, всё нормально)

Но мне не просто клик нужен. У меня часть элементов скрыты. От последнего видимого элемента до последней кнопки ещё 3 элемента с выпадающими списками. Вот данные в выпадающих списках не видны, т.к выпадают вниз, а вниз автоматически скролл не проходит.

Вот недавно совсем делал

$(By.xpath("//h2[text()='" + form + "']//ancestor::div[@class='block-wrapper']")).scrollIntoView(false);

Значение true скролит вверх соответственно

1 Симпатия

У меня пока элемент не становился видимым не срабатывал click().

Низкий поклон, теперь заработало)

1 Симпатия