Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

найти и кликнуть на кнопку по всплывающей подсказке

selenide
javascript
Теги: #<Tag:0x00007f7b70abd860> #<Tag:0x00007f7b70abd720>

#1

Приветствую!

Как можно кликнуть на кнопку, при наведении на которую появляется надпись Chart context menu?

<title>Chart context menu</title>


(Bohdan Harasym) #2

driver.SwitchTo().Alert().Accept();

driver.switchTo().defaultContent();
driver.switchTo().frame("");


(Алеся) #3

Вопрос на не совсем понятен. Зачем наводить на кнопку, если Вам надо на неё нажать? жмите и всё


(Сергей Блохин) #4

Что такое всплывающая подсказка?
Некий HTML элемент, который отображается при наведении курсора мышки?
Приведите пример страницы или снимок экрана.


#5

вот такая кнопка, при наведении на нее, всплывает надпись Chart context menu:

код:

<g class="highcharts-button" style="cursor:default;" stroke-linecap="round" transform="translate(460,10)"><title>Chart context menu</title><rect x="0.5" y="0.5" width="24" height="22" fill="white" stroke="none" stroke-width="1" rx="2" ry="2"></rect><path fill="#E0E0E0" d="M 6 6.5 L 20 6.5 M 6 11.5 L 20 11.5 M 6 16.5 L 20 16.5" stroke="#666" stroke-width="3"></path><text x="0" style="color:black;fill:black;" y="12"></text></g>
 <title>Chart context menu</title>
 <rect x="0.5" y="0.5" width="24" height="22" fill="white" stroke="none" stroke-width="1" rx="2" ry="2"></rect>

на кнопку можно кликнуть по локатору #highcharts-8 > svg > g.highcharts-button, но только один раз, т.к. при следующем открытии браузера он поменяется (цифра 8 на другую).


(Ray Romanov) #6

Воспользуйся Xpath:
//*[starts-with(@id, "highcharts-")]/svg/g[@class="highcharts-button"]
и пофиг какая там цифирь будет…


#7
 FAIL  Clickable element //*[starts-with(@id, "highcharts-")]/svg/g[@class="highcharts-button"] was not found by text|CSS|XPath

(Lev Yarushin) #8

А так не пробовали?

//g[@class='highcharts-button']

или так

//title[text()='Chart context menu']/..

(Ray Romanov) #9

Вот, яркий пример бездумного использование предполагаемого локатора без проверки его в браузере.
Т.к. не было предоставлено более широкого фрагмента страницы, то локатор предположительный и требует соответственно доработки


#10

Если использовать одинарные кавычки вообще выдает:

 ERROR  missing ) after argument list

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

 FAIL  Clickable element //*[@id="highcharts-0"]/svg/g[1]/path was not found by text|CSS|XPath

(Michael Bodnarchuk) #11

Предлагаю вопсользоваться дебаг режимом, включив pause() перед местом где вам нужно кликнуть. Включится интерактивная консоль. В ней постарайтесь попробовать все возможные селекторы.

Я бы продебажил через I.grabTextFrom() - находит ли локатор и что в нем.

Также в крайнем случае можно кликнуть средствами JavaScript, но для этого всё равно надо найти нужный объект. Если у вас есть jquery это может быть что-то в стиле:

I.executeScript(() => $('CSS-selector-for-element').click());

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

может дело в namespaces ?
SVG tests
требуют замены

//svg/rect

на

/html/body/*[name() = "svg"]/*[name() = "rect"]

ну и т.д.
?
это все описано http://stackoverflow.com/questions/14592213/selenium-webdriver-clicking-on-elements-within-an-svg-using-xpath