Событие щелчка Ext.button не является ответом с тестом Bryntum Siesta

Я пытаюсь заполнить textfield, а затем запустить событие click с Bryntum Siesta Test. Весь процесс тестирования прошел успешно, но только кнопка "Сохранить" не отвечает на это событие щелчка и продолжает говорить:

Waited too long for: componentQuery "datatoolbar[id=datatoolbar-1100]"
Failed assertion `waitForComponentQuery` 
Condition was not fullfilled during 10000ms

Как я могу запустить событие щелчка для видимой кнопки с помощью Bryntum Siesta?

Test.js

describe('Testing Update Process', function (t) {
    t.it('Should to login with correct creds.', function (t) {
        t.chain(
            {waitForCQ: 'window[title=Login]'},
            {click: '>> textfield[itemId=userName]'},
            {type: '[email protected]', target:'>> textfield[itemId=userName]'},
            {click: '>> textfield[name=password]'},
            {type: 'superSecretPass', target:'>> textfield[name=password]'},
            {click: '>> button[text=Submit]', desc: 'Submit process is succeed!'}
        )
    })

    t.it('Login window should be invisible', function (t) {
        t.chain(
            {waitForCQNotVisible: 'window[title=Login]', desc: 'Login window is hidden now!'}
        )
    })

    t.it('Should open Folio grid', function (t) {
        t.chain(
            {waitForCQ: 'treelist[itemId=navigationTreeList]', desc: 'Wait for treelist'},
            {click: '>> treelistitem[id=ext-treelistitem-6]', desc: 'Clicks Folio item'},
            {waitForCQ: 'treelistitem[id=ext-treelistitem-7]', desc: 'Wait for treelist sub-item: Folios'},
            {click: '>> treelistitem[id=ext-treelistitem-7]', desc: 'Clicks Folios'}
        )
    })

    t.it('Should click on Edit button', function (t) {
        t.chain(
            {waitForCQ: 'gridview[id=gridview-1067]'},
            {click: '>> button[id=button-1087]', desc: 'Clicks on Edit button'}
        )
    })

    t.it('Should update Client Name', function (t) {
        t.chain(
            {click: '>> textfield[name=clientname]'},
            {type: 'Siesta Testing for Update', target: '>> textfield[name=clientname]', desc: 'Types lorem ipsum data'}
        )
    })

    //This last part is giving error and test becomes failure.
    t.it('Should Save the last changes', function (t) {
        t.chain(
            {waitForCQ: 'datatoolbar[id=datatoolbar-1100]'},
            {click: '>> button[id=button-1104]', desc: 'Clicks on Save, All Succeed :-)'}
        )
    })
})

Вот скриншот формы данных и тестового фрагмента. Как вы заметили выше, я использовал waitForCQ вместо datatoolbar, который оборачивает кнопку Сохранить. Также я пытался вызвать событие клика самостоятельно, но оно также дало ошибку: Wait for button[id=button-1104] to appear и сбой.

Кнопка уже видна, а обернутые элементы DOM — это данные формы (включая метки и текстовые поля) и панель инструментов данных (включая кнопки).

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


person Nuri Engin    schedule 09.10.2017    source источник
comment
Вы не должны полагаться на автоматически сгенерированные идентификаторы в своих тестах, потому что они могут легко измениться.   -  person Alexander    schedule 09.10.2017
comment
Спасибо за указание @Alexander. Я проведу тщательный рефакторинг запросов.   -  person Nuri Engin    schedule 10.10.2017


Ответы (1)


Как уже отмечалось в комментариях, причина, вероятно, просто в нестабильном запросе (поскольку он использует автоматически сгенерированные идентификаторы).

Сообщение об ошибке Waited too long for: componentQuery "datatoolbar[id=datatoolbar-1100]" указывает на то, что Siesta выполняла запрос указанного компонента, но для него не было возвращено никаких результатов.

Вместо автоматически сгенерированных идентификаторов попробуйте использовать более стабильный и конкретный атрибут панели инструментов, на которую вы ориентируетесь: datatoolbar[specificAttr=value]

person CanonicEpicure    schedule 10.10.2017
comment
Уважаемый @SamuraiJack, каким-то образом это свойство id остается прежним --button-1104, но, как вы упомянули, я использовал другое конкретное свойство, и теперь оно работает. Большое спасибо. - person Nuri Engin; 10.10.2017