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

Selenide: работа с тэгом <map> без javascript

selenide
selenium
webdriver
javascript
Теги: #<Tag:0x00007f7b62253ac0> #<Tag:0x00007f7b622537f0> #<Tag:0x00007f7b62253660> #<Tag:0x00007f7b62253390>

(Alexey Proshin) #1

Здравствуйте!

Есть ли в Selenide возможность выполнить действие с в тэге ?

Приходится использовать конструкции типа:

executeJavaScript("return arguments[0].click()", $(By.cssSelector("area[alt=\"Академия\"]")));

(asolntsev) #2

Конечно есть!
Это ведь то же самое, что и $("area[alt=\"Академия\"]").click();


(Alexey Proshin) #3

Андрей, спасибо!
Извините, что я неудачно сформулировал свой вопрос.
Именно приведенную Вами конструкцию я и использовал при написании теста. Мой вопрос связан с тем, что Selenide, к сожалению, не работает с тегом map так, как ожидалось. Метод $(“area[alt=“Академия”]”).click() не находит соответствующую область. А вот executeJavaScript(“return arguments[0].click()”, $(By.cssSelector(“area[alt=“Академия”]”))) прекрасно отрабатывает.

Похоже, что Selenide наследует проблему из Selenium. Кстати ее нет в Selenium IDE. Причем, что интересно, экспорт теста из Selenium IDE дает тест Selenium c неработающей конструкцией обработки тега map:
(driver.findElement(By.cssSelector(“area[alt=“Академия”]”)).click();).

Удалось найти следующее обсуждение в инете по данной теме:
https://groups.google.com/forum/m/#!topic/webdriver/R5z2ueNgfhY

В принципе конструкция с использованием javascript достаточно компактна, но хотелось бы сохранить красоту Selenide (в отличие от ее косноязычного, но тоже замечательного папаши Selenium :smile:). Кроме того, я полностью согласен с Вами, что с не следует смешивать идеологически разные подходы к созданию тестов
([А.С.] “В принципе можно так делать. Но это действительно франкенштейн.” https://salesforce-developer.ru/forum/topic-testirovanie-salesforce-s-pomoschu-selenide-voprosy-otvety).

  создано
  
  18 часов

  
  последний ответ
  
  17 часов
  

  1
  ответ

  30
  просмотров

  2
  пользователя

(asolntsev) #4

Привет!
Теперь понял проблему. Да, это проблема (ну или особенность) Selenium webdriver.
Предположу, что в Selenium IDE её нет потому, что Selenium IDE как раз и выполняет все команды через JavaScript.

Похоже, вашу проблему решит вот такая настройка: -Dselenide.click-via-js=true.
Когда она включена, Selenide как раз совершает операцию click через JavaScript, а не вебдрайвер. Это как раз и было придумано для тех случаев, когда просто click не работает.


(Alexey Proshin) #5

Класс!
$(“area[alt=“Академия”]”).click() заработал!

Спасибо!

Андрей, извините за вопрос, а где можно прочитать про возможные параметры (настройки) запуска Selenide и случаи (которые имелись в виду, когда Вы создавали эту настройку), когда просто click не работает?


(asolntsev) #6

Это легко: http://selenide.org/javadoc/3.4/com/codeborne/selenide/Configuration.html


(Alexey Proshin) #7

Спасибо Вам большое!
Ждем Ваших новых публикаций и выступлений!
Удачи!