首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >宁静/JS:为什么See.if中的断言有时返回空字符串?

宁静/JS:为什么See.if中的断言有时返回空字符串?
EN

Stack Overflow用户
提问于 2018-07-06 13:17:00
回答 2查看 290关注 0票数 0

我在See.if()中遇到了一个问题,它有时会返回空字符串。

使用的技术堆栈:

  1. 黄瓜和量角器的宁静/JS
  2. P-咆哮-初级咆哮组分
  3. 柴氏承诺-期待方法

以下是错误:断言错误:期望“”包含“操作成功”

steps.ts

代码语言:javascript
复制
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)
    );
});

Task.ts

代码语言:javascript
复制
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

代码语言:javascript
复制
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'));
}

请帮帮我。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-07-06 14:14:04

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

代码语言:javascript
复制
Wait.for(Duration.ofSeconds(5)),
Wait.until(ListUI.message, Is.present()),
票数 0
EN

Stack Overflow用户

发布于 2018-07-16 12:36:25

我通过提供原始咆哮信息选择器来解决这个问题。

为消息提供准确的选择器(#messages ..ui咆哮-消息)。

以下代码是固定的:

代码语言:javascript
复制
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'));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51211294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档