Селекторы для Selenium в Extjs проекте автоматизации на Java

jenkins
testng
java
selenium
webdriver
Теги: #<Tag:0x00007f7b6a330760> #<Tag:0x00007f7b6a330350> #<Tag:0x00007f7b6a330120> #<Tag:0x00007f7b6a347e38> #<Tag:0x00007f7b6a347910>

(Pak Aleksey) #1

Мне нужно найти уникальный xPath или селектор, чтобы я мог выбирать каждый элемент отдельно с помощью Selenium.

Я попытался сделать .xPath по iD
Но тк id генерируются рандомно, то тест падает.
Попытался вывести все компоненты js из коллекции
Ext.ComponentManager.all.map
Но и там не смог ничего подцепить, подскажите вообще реально ли автоматизировать extjs? На хабре информация мало помогла.
extjs 3.x


(Dmitry Klymenchuk) #2

Сталкивался с такой бедой. Тут есть варианты решения:

  • договориться с девами чтобы отключили этот рандом, он вроде бы отключаем;
  • можно цепляться по классам, родительским отношениям, если у вас нету локализаций, то можно цепляться к текстам - в теории так делать не нужно, но если не остается выбора, хоть что-то.

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

похожий вопрос задали недавно на
http://software-testing.ru/forum/index.php?/topic/31004-dinamicheskie-id/
я попытался предложит вытаксивать html5 id через @for у видимых и по видимому легко находимых label - вам это может подойдет ?


(Pak Aleksey) #4

На хабре была статья как находить по дом элементу js объекты различные. Но у меня пока не получается


(Pak Aleksey) #5

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


(Dmitry Klymenchuk) #6

Тут нужно более конкретный пример, что не получается?


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

это был привер но вообще Page Element method принимающий visible text of the label and optional value and direction receive or send the value - will do the task :slight_smile:


(Pak Aleksey) #8

Итак получилось все сделать через xpath/css. Список компонентов extjs из коллекций можно увидеть этой командой в консоли(работает в ext js 3.4)

Ext.ComponentMgr.all.map

Дальше смотрим нужный компонент и берем его id

Ext.getCmp(“ext-comp-1001”).el.id

ext-get - авто генерируемые id, но можно взять его “родителя” и через xpath/css найти остальное. Удачи вам в освоении нелегкого.