Тестирование поля со списком, разработанного с использованием ExtJS с помощью CasperJS

Я разработал свое приложение, используя ExtJs 4.1. У меня есть поле со списком, которое заполняется с помощью вызова Ajax. Как только поле со списком заполнено, мне нужно найти элемент по имени, а затем сначала выбрать событие для этого элемента.

Проблема заключается в том, как ExtJS отображает поле со списком. Я не знаю, как правильно выбрать элемент. CombBox на самом деле не элемент <select>, а элемент text input с отдельным выпадающим списком, который находится где-то внизу дерева документа.

Я не хочу жестко кодировать идентификатор, поскольку ExtJS генерирует идентификатор случайным образом.

Так выглядит сгенерированный HTML

введите здесь описание изображения

Вы можете проверить пример поля со списком ExtJs здесь


person SharpCoder    schedule 30.11.2015    source источник


Ответы (2)


Без тестирования, я бы предложил,

var x = require("casper").selectXPath;

casper.thenClick(".x-form-trigger.x-form-arrow-trigger")
    .wait(100)
    .thenClick(x("//li[contains(@class,'x-boundlist-item') and contains(text(),'Alaska')]"))
    .wait(100, function(){
        this.capture("screenshot.png");
    });

Вам также может понадобиться переместить мышь в нужное положение, прежде чем щелкнуть. Использовать

casper.then(function(){
    this.mouse.move(selector)
});
person Artjom B.    schedule 30.11.2015

Поскольку у вас есть ComboBox в форме, вы можете использовать свойство "name" в определении ComboBox и выбрать его с помощью:

Ext.getCmp("idOfThePanel").down('form').getForm().findField('name');

Другой вариант — использовать свойство "reference". В этом случае я не уверен, как правильно выбрать ComoBox:

Ext.getCmp("idOfThePanel").down('form').getForm().lookupReference('reference');

or

Ext.getCmp("idOfThePanel").lookupReference('reference');
person daniegarcia254    schedule 01.12.2015
comment
Вот как я включил extjs. casperjs test --include=ext-all.js testFile.js. После включения ссылки ext я могу сказать var component = Ext.getCmp('component-id'). Но component остается undefined. - person SharpCoder; 17.12.2015