Serenity-JS, пошаговая функция истекла по тайм-ауту

Я делаю первые шаги с Serenity, и я застрял на 2 дня с этой проблемой.

У меня есть:

  • перейти на страницу входа
  • напишите имя пользователя
  • напиши пароль
  • нажмите кнопку входа

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

При переходе со страницы входа на страницу приветствия появляется заставка загрузки, а затем через несколько секунд появляется страница приветствия.

This is my scenario
Given that Sarah navigates to the access page
When she enters email as [email protected]
And she enters password as zzzzzz
And she clicks the button Login
Then she should navigates to the Empresa JMM Enterprise welcome page

Я получил ошибку на последнем шаге (тогда).

Это мой код для шага, на котором нажимается кнопка «Войти»:

this.When(/^prueba pulsar boton (.*?)$/, function (buttonText: string) {
    return this.stage.theActorInTheSpotlight().attemptsTo(
        ClickIniciarSesion.click(buttonText)
    )       
});

И это код, в котором я проверяю, присутствует ли кнопка

this.Then(/^s?he should navigates to (.*?) Enterprise welcome page$/, function (enterpriseName: string) {
return this.stage.theActorInTheSpotlight().attemptsTo(
See.if(WebElement.of(Header.WelcomeButton), el => expect(el).to.eventually.be.displayed)
)

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


person Jose    schedule 07.11.2018    source источник
comment
Вы установили тайм-аут скрипта? Можете ли вы добавить точное сообщение об ошибке, которое вы видите в консоли?   -  person Bharath Kumar S    schedule 07.11.2018


Ответы (1)


Я думаю, что у меня есть решение. При переходе со страницы входа на страницу приветствия появляется одна страница загрузки. Я думаю, что безмятежность «смотрит» на эту загрузочную страницу.

Тест прошел нормально, отключив синхронизацию Angular, выполнив ожидание вручную и включив синхронизацию.

this.Then(/^s?he waits the enterpise data load$/, function () {       
    return this.stage.theActorInTheSpotlight().attemptsTo(
        UseAngular.disableSynchronisation()
    );
});    

this.Then(/^s?he should navigates to the (.*?) Enterprise welcome page$/, function (enterpriseName: string) {       
    return this.stage.theActorInTheSpotlight().attemptsTo(
        Wait.until(Header.EnterpriseName, Is.visible()),
        See.if(Header.EnterpriseName_Text, el => expect(el).to.eventually.be.equal(enterpriseName)),
        UseAngular.enableSynchronisation()
    )        
});   

Я не знаю, является ли это лучшим решением.

person Jose    schedule 08.11.2018