Nightwatch JS页面对象返回undefined

时间:2016-11-28 14:30:08

标签: selenium mocha nightwatch.js

我正在使用带有摩卡的Nightwatch。

我尝试从页面对象中获取元素的文本。当尝试将接收到的文本与另一个文本进行比较时,我收到错误“AssertionError:expect undefined to equal'Text'”。

这是页面对象功能:

const Commands = {

  getInstanceLabel() {
    this.getText('.DropdownSelect__label', (result) => {
      return result.value;
    });
  }
}

这是测试代码:

it('Should sort the collection in ascending order by default', (client) => {
  const labelText = client.page.instanceCollectionPage().getInstanceLabel();
  expect(labelText).to.equal('Text');
});

为什么显示未定义?

1 个答案:

答案 0 :(得分:1)

问题是你正在使用箭头功能,如mdn:

中所述
  

与函数相比,箭头函数表达式的语法更短   表达式和不绑定它自己的,参数,超级或   new.target。

你可以用两种不同的方式解决它:

使用功能:


例如(您可以使用

  it('Should launch', function (browser) {
    const url = browser.launchUrl;
    browser.url(url).waitForElementVisible('body', 1000);    
    browser.getText('#txtWelcome', function (result) {
      this.verify.equal(result.value, 'Welcome');
    });
  });

使用浏览器:

e.g。 (您需要直接访问浏览器对象)

  it('Should launch', (browser) => {
    const url = browser.launchUrl;
    browser.url(url).waitForElementVisible('body', 1000);    
    browser.getText('#txtWelcome', (result) => {
      browser.verify.equal(result.value, 'Welcome');
    });
  });

这些只是如何使用的示例,我无法提供有关您的问题的更多详细信息,因为您不会显示 InstanceCollection 所做的事情。