Интеграция Selenide + ExtJS6.5 (ComponentQuery). Стоит ли замарачиваться?

extjs
webdriver
selenide
Теги: #<Tag:0x00007fedbaa46e10> #<Tag:0x00007fedbaa46c30> #<Tag:0x00007fedbaa46af0>

(Андрей Скрипниченко) #1

Cтоит вопрос стрессоутойчисвости CSS/XPath для ExtJS6.5. Дев команда порекомендовала использовать аппроач с Ext.ComponentQuery и уверяет что в таком случае, тест автомейшн команде не страшны ExtJS апгрейды и др. ченжи. Собствeнно пытаюсь сделать PoC c преваращением Ext.ComponentQuery в SelenideElement.

Я попытался сделать:

Selenide.executeJavaScript(“Ext.ComponentQuery.query(“component”)”), в итоге result = null и консоль поднятого браузера молчит.

UPD: Смог вытянуть Id элемента

(String)Selenide.executeJavaScript(“return Ext.ComponentQuery.query(“titletools[text=‘Tools’]”)[0].id”)

В случае :

Selenide.executeJavaScript(“Ext.ComponentManager.each(function (id, item){console.log(id, item.initialConfig)})”)
в консоле получаю спсисок елементов, но елементы не передаются в Selenide.

Пытался подсмотреть решение здесь: https://github.com/mmichaelis/socrates15-selenide/tree/master/src/test/java/so/cra/tes/selenide/extjs/ext

Но не выходит передать объект в Selenide.

Порекомендуйте, что в таком случае можно сделать?


(Oleksandr Khotemskyi) #2

(Oleksandr Khotemskyi) #3

Метод $ перегружен, и позволяет передавать разные типы внутрь

http://selenide.org/javadoc/current/com/codeborne/selenide/Selenide.html#Z:Z:D-org.openqa.selenium.By-

$(By.componentQuery('blabla'))

(Андрей Скрипниченко) #4

@xotabu4 , спасибо за идею! Постараюсь попробовать. Отпишусь о результатах.


(asolntsev) #5

Вы забыли “return”:


(Андрей Скрипниченко) #6

Да, изначально таки забыл. В UPD уже исправился.
Первая победа есть в том, что сделав Override методов селениум класса By удалось создать кастомный локатор, который возвращает WebElement, а Selenide охотно подхватывает его в $/$$.
Хитрость состоит в том, что у Extjs.ComponentQuery мы должны спрашивать не просто объект, а его референс на dom. Extjs.ComponentQuery локатор должен выглядить приблизительно так “blablabla.el.dom”.
Как только удастся сделать все красиво, поделюсь решением или спрошу еще вопросы.