Есть Web приложение с использованием extJS фреймворка. Хочется его автоматизировать при помощи Selenium.
Какие у кого есть наработки на эту тему?
Есть Web приложение с использованием extJS фреймворка. Хочется его автоматизировать при помощи Selenium.
Какие у кого есть наработки на эту тему?
Работать через скрипт.
1. Находим объект
2. Берём его id
3. Зовём Ext.getCmp(id)
Проблема. id всегда генерятся динамически "ext-cmp-счётчик" для объектов. Наши разрабы строят формы ExtJS по некому общему описанию. В этих описаниях хранятся наши внутренние id. При создании формы они строят соответствия наши_внутренние_id - id_сгенерированне_extjs и хранят это внутри js-движка браузера. Соответственно мы стром тесты, опираясь на наши, статические id и в процессе прогона теста получаем нужные нам объекты. Про минусы того, что придётся работать через скриптовой движок думаю говорить не стоит - все знакомы.
можно подробнее про "Зовём Ext.getCmp(id)"
id - можно вычеслять с помощью jquery. Можно использовать, к примеру, класс елемента, если он уникален, функциональность jquery для локализации елемента.
К примеру, нужно получить id елемента, который отображает индикатор загрузки. Заходим в консоль Chrome, либо FireBug, локализируем елемент и смотрим, какие у него есть классы. К примеру, есть уникальный класс
loading-img. В этом случае получение id будет выглядеть следующим образом:
window.$('.loading-img')[0].id,
где
window - это родительское окно,
. - указывает на то, что ищем по классу (если ищем по id, используется "#")
loading-img - уникальный класс елемента.
[0] - получаем DOM element
.id - получаем id елемента.
Результатом будет строка, которая является id елемента.
Даллее можно указывать, как описано выше: Ext.getCmp(id). Т.е. полная строка будет в виде: Ext.getCmp(window.$('.loading-img')[0].id).
Результатом вызова этого выражения в консоли будет Ext елемент. Развернув его (можно сделать в Chrom'e), можно проверить, какие у него есть свойства. Либо же, второй вариант, проверить документацию Sencha.
К примеру, нужно проверить свойство isVisible (не обязательно есть у каждого елемента). Тогда пишем: Ext.getCmp(window.$('.loading-img')[0].id).isVisible;
в тесте конструкция selenium.getEval(Ext.getCmp(window.$('.loading-img')[0].id).isVisible) вернет строку "true" либо "false". Переводим в boolean и получаем флаг наличия елемента.
Таким же образом можно вызывать методы Ext элемента.