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

Google iframe перехватывает click() от selenium в браузере Chrome

java
selenium
chrome
google
Теги: #<Tag:0x00007f9c4a1c9dd0> #<Tag:0x00007f9c4a1c9c90> #<Tag:0x00007f9c4a1c9b50> #<Tag:0x00007f9c4a1c9a10>

(mpetrov) #1

Например, если в инкогнито зайти по ссылке https://www.mamba.ru/bbs/answer.phtml?id=29898958, то там всплывет модал для подтверждения, что вы старше 18 лет.
Проблема в том, что под кнопкой “Я старше 18” находится гугл каптча http://prntscr.com/n5rjmd и стандартный селениумовский клик не срабатывает. Ошибки нет, но и ничего не происходит, как будто метод click() не вызывался.

Аналогичная ситуация, если под лайером находится iframe с google Ads http://prntscr.com/n5rj3d. Происходит как будто перехватывание клика, правда, клика по рекламе или каптче тоже нет.

Проверял на версиях Google Chrome 73.0 и 74.0 (и соотвествующие chromedriver), а так же selenium 3.141.59 и 3.14.0.
Сам хром пробовал без опций и аргументов - просто driver = new ChromeDriver();

И что интересно, проблемы нет в Firefox 66.0.2, geckodriver-v0.24.0-macos
Проблема и локально на маке и на удаленке на винде.

С чем это может быть связано?


(Михаил Новицкий) #2

Ты делаешь переключение на iframe перед кликом?
и покажи код клика


(mpetrov) #3

Конечно нет, я же кликаю по кнопке.
click(By.cssSelector( “.web-modal-inner .button”));


(Павел Сенин) #4

Если изящного решения не удается найти, то можно в эти моменты щелкать по элементам (точнее по области экрана, которая соответсвует паттерну изображения) через библиотеку sikulix. Локально клики будут работать 100% (т.к. это клики в область экрана), но нужно будет отдельно протестировать работу на виртуалках.


(mpetrov) #5

Мне кажется проще кликать через JavaScript, ну или вообще удалять iframe с рекламой из дерева.
Но хотелось бы именно понять причину, почему такое происходит