Nightwatch JS 页面对象 returns 未定义

Nightwatch JS page object returns undefined

我正在使用 Nightwatch 和 mocha。

我尝试从页面对象中获取元素的文本。尝试将收到的文本与另一文本进行比较时,我收到错误消息 "AssertionError: expected 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');
});

为什么显示未定义?

问题是你正在使用箭头函数,并且如 mdn 中所述:

An arrow function expression has a shorter syntax compared to function expressions and does not bind its own this, arguments, super, or new.target.

您可以通过两种不同的方式修复它:

使用函数:


例如(你可以使用this

  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');
    });
  });

使用浏览器:

例如(需要直接访问浏览器对象)

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

这些只是如何使用 this 的示例,我无法提供有关您的问题的更多详细信息,因为您没有显示 InstanceCollection 确实如此。