Serenity-JS, тайм-аут функции шага - PullRequest
0 голосов
/ 07 ноября 2018

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

У меня есть:

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

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

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

This is my scenario
Given that Sarah navigates to the access page
When she enters email as xxxx@yyyyy.com
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)
)

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

1 Ответ

0 голосов
/ 08 ноября 2018

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

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

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()
    )        
});   

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

...