如何组合多个this.expect语句

时间:2018-02-02 16:06:03

标签: javascript nightwatch.js pageobjects

我想在执行下一个测试步骤之前创建一个验证所有着陆页对象是否存在的方法。以下是我目前所拥有的,但我正在寻找一种更清洁的方法来实现这一目标。任何建议都非常感谢。

verifyLandingPageNavElements:function(){
    this.expect.element('@NavLogo_img')
    .to.be.present.after(2000),
    this.expect.element('@BuySearch_nav')
    .to.be.present.after(2000),
    this.expect.element('@Sell_nav')
    .to.be.present.after(2000),
    this.expect.element('@Appraise_nav')
    .to.be.present.after(2000),
    this.expect.element('@Products_nav')
    .to.be.present.after(2000),
    this.expect.element('@LocateADealer_nav')
    .to.be.present.after(2000)
    this.expect.element('@Search_nav')
    .to.be.present.after(2000)
}, 

1 个答案:

答案 0 :(得分:1)

好的方法是为此创建一个自定义命令。

// ./lib/custom-commands/expectElementsToBePresent.js

exports.command = function(selectors, ms) {
  selectors.forEach(selector => this.expect.element(selector).to.be.present.after(ms));
  return this;
};

// Test case

client
  .url('https://some.url')
  .expectElementsToBePresent([
    '.some.selector',
    '.another.selector'
  ], 2000);

不要忘记将Nightwatch指向保存自定义命令的目录(在我的示例中为./lib/custom-commands),方法是设置配置文件的custom_commands_path属性。

如果您想了解有关自定义命令的更多信息,请参阅官方文档的链接:http://nightwatchjs.org/guide#writing-custom-commands