Как кликнуть через оверлей по селектору?

serenity
click
java
selenium
Теги: #<Tag:0x00007f7b622909e8> #<Tag:0x00007f7b62290830> #<Tag:0x00007f7b622906c8> #<Tag:0x00007f7b62290588>

(Andriy Sinchuk) #1

Всем привет, есть проблема, селениум не видит элементов так как над ними есть оверлей как кликнуть через оверлей? Оверлей статический, вейтеры не катят.

Технологии: java 8, serenity

Пробовал Actions, не помогло, ломается на action.perform();

верстка:


(Alexandr D.) #2

Ну, вроде логично. У вас же что-то типа модального окна открыто, нет?


(Andriy Sinchuk) #3

да, открыто модальное окно


(Bohdan B) #4

Закройте окно)


(Andriy Sinchuk) #5

))) Мне в нем как бы надо кликать и сендкейсы делать


(Bohdan B) #6

Так если оверлей перекрывает то на что нужно нажать это же баг


(Andriy Sinchuk) #7

через оверлей на скрине клики мышкой работают, тоесть проблема исключительно с вебдрайвером


(Bohdan B) #8

Попробуйте сначала нажать на оверлей а потом на поле
Или вообще удалите оверлей js-om: document.querySelector(‘xxxxx’).remove()


(Valentin G ) #9

Overlay это типа Popup’a, потому если его удалить, то скорее всего пропадет элемент, по которому надо кликнуть. А этот элемент скорее всего дочерний по отношению к Overlay’u. У меня в проекте был похожий, пришлось писать длинный селектор, который вначале находил сам Overlay, потом уже конкретно в нем находил элемент. Это сработало в моем случае. Только вначале надо открыть его. Чтобы искомый элемент был виден.


(Сергей Кузьмин) #10

@Valentin_G @Andriy_Sinchuk вау можете сценарий подробно описать ?
я так думаю linkedin один на всех хочу попробовать автоматизировать это если выйдет естественно поделюсь
:smile::v::star:

chained FindElement это самая ягодка! по моему


(Юлия Шаповалова) #11

Можно кликнуть принудительно с помощью javaScriptExecutor.

executor.executeScript(“arguments[0].click();”, element);


(Valentin G ) #12

У меня был следующий сценарий:

  1. Открыть попуп.
  2. Дальше ждать пока кнопка видима.
  3. Кликнуть по ней.

Как говорил в предыдущем сообщении, самое сложное было вычислить селектор, на странице может несколько таких попапов, но часть из них не видима, а часть видима, потому кнопка вроде находится, но может быть из другого попапа, который закрыт сейчас. У меня был длинный селектор для той кнопки, и несколько вариантов селекторов, прежде чем нашел нужный.


(Сергей Кузьмин) #13

селениум это ж не Рон Джереми когда селектор вырастает длинный это совсем не радует - вы можете искать кноп внутри уже найденого popup так как они оба

extend
SearchContext,

оба
https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html

и

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/RemoteWebDriver.html


(Valentin G ) #14

Если вы сможете найти короткий для вашего элемента, то поздравлю вас :slight_smile:
Мне увы не удалось.


(Сергей Кузьмин) #15

в каждом случае по своему например часто помогает после того как tricky to grab элемент найден посмотреть его getAttrbute("innerHTML" ) (если не в browser console то хотя бы как текст в System.out -


(Andriy Sinchuk) #16

Ого, сколько ответов))) Я и не думал что в новогодние праздникиих будет столько))) Спасибо всем, буду пробовать)