0

我遇到了 See.if() 的问题 - 它有时会返回空字符串。

使用的技术堆栈:

  1. Serenity/JS 带黄瓜和量角器
  2. P-Growl - Primeng 咆哮组件
  3. Chai as promise - expect 方法

这是错误:断言错误:预期''包括'操作成功'

步骤.ts

this.Then(/^he should see the user (.*) success message$/, (severity) => {

    browser.waitForAngularEnabled(false); // Workaround fix for p-growl

    return stage.theActorInTheSpotlight().attemptsTo(
        Messages.called(severity)
    );
});

任务.ts

import { PerformsTasks, Task, Enter, Click, See, Is, Wait, Text } from 'serenity-js/protractor';

import { expect } from '../utils/expect';
import { ListUI } from '../components/ui';

export class Messages implements Task {

  constructor(private severity: string) { }

  static called(severity: string) {
    return new Messages(severity);
  }

  performAs(actor: PerformsTasks): PromiseLike<void> {
    if (this.severity.toLowerCase() === 'success') {
        return actor.attemptsTo(
            Wait.until(ListUI.message, Is.present()),
            See.if(
                Text.of(ListUI.message),
                actual => expect(actual).to.eventually.include('Operation Success')
            ),
            Click.on(ListUI.messageCloseWidget)
        );
    }
  }
}

ui.ts

import { Target, Text } from 'serenity-js/protractor';
import { by } from 'protractor';

export class ListUI {

  static message = Target.the('Message Widget')
    .located(by.id('messages'));

  static messageCloseWidget = Target.the('Message Close Widget')
    .located(by.css('#messages .ui-growl-icon-close'));
}

请帮我。提前致谢。

4

2 回答 2

0

我通过提供primeng 咆哮消息选择器解决了这个问题。

为消息提供了准确的选择器(#messages .ui-growl-message)。

以下代码已修复:

import { Target, Text } from 'serenity-js/protractor';
import { by } from 'protractor';

export class ListUI {

  static message = Target.the('Message Widget')
    .located(by.css('#messages .ui-growl-message'));

  static messageCloseWidget = Target.the('Message Close Widget')
    .located(by.css('#messages .ui-growl-icon-close'));
}
于 2018-07-16T12:36:25.107 回答
0

在 wait.until() 之前尝试使用 Wait.for(Duration.ofSeconds(5))

Wait.for(Duration.ofSeconds(5)),
Wait.until(ListUI.message, Is.present()),
于 2018-07-06T14:14:04.580 回答