Serenity-JS,步进功能超时

时间:2018-11-07 12:13:54

标签: protractor bdd ui-automation serenity-bdd serenity-js

我正在与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 :(得分:0)

我认为我有解决方案。在从登录页面到欢迎页面的过渡中,将显示加载页面。我认为在此加载页面中“宁静”正在“看起来”。

测试通过,可以禁用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()
    )        
});   

我不知道是否是更好的解决方案。