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

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

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

1 лайк

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

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

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

1 лайк

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

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

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

1 лайк

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

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

Ext.ComponentMgr.all.map

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

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

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