Nightwatch.js `page_objects_path`字段不';不能在nightwatch.config.js中工作

Nightwatch.js `page_objects_path`字段不';不能在nightwatch.config.js中工作,nightwatch.js,Nightwatch.js,我在nightwatch中使用页面对象,在nightwatch.conf.js中配置Page\u Objects\u path,但是当我引用这些定义的元素时,出现了错误。我不知道为什么。我使用vue cli构建项目。 以下是我的配置: nightwatch.conf.js 页面对象文件register.js: module.exports = { elements: { genderField: '.common-picker:first-child', genderPick

我在nightwatch中使用页面对象,在nightwatch.conf.js中配置
Page\u Objects\u path
,但是当我引用这些定义的元素时,出现了错误。我不知道为什么。我使用vue cli构建项目。 以下是我的配置:

nightwatch.conf.js
页面对象文件
register.js

module.exports = {
  elements: {
    genderField: '.common-picker:first-child',
    genderPicker: '.picker',
    genderOptionLast: '.picker-item:last-child',
    genderPickerConfirmButton: '.picker-toolbar span:last-child',
    genderPickerCancelButton: '.picker-toolbar span:first-child'
  }
}
在测试文件中使用页面对象:

'select a gender option': function (browser) {
    browser
      .assert.hidden('@genderPicker')
      .click('@genderField')
      .pause(1000)
      .click('@genderOptionLast')
      .click('@genderPickerConfirmButton')
      .assert.containsText('@genderField', '女士')
      .pause(1000)
      .end()
  }
错误信息:

页面对象文件应具有每个元素的关键字选择器

module.exports = {
    elements: {
        genderField: {
            selector: '.common-picker:first-child'
        },
        genderPicker: {
            selector: '.picker'
        },
        genderOptionLast: {
            selector: '.picker-item:last-child'
        },
        genderPickerConfirmButton: {
            selector: '.picker-toolbar span:last-child'
        },
        genderPickerCancelButton: {
            selector: '.picker-toolbar span:first-child'
        }
    }
}

您需要在测试顶部将页面对象定义为常量,然后从registerPage对象调用元素:

  'select a gender option': function (browser) {
    const registerPage = browser.page.register();
    registerPage.assert.hidden('@genderPicker')
    registerPage.click('@genderField')
    browser.pause(1000)
    registerPage.click('@genderOptionLast')
    registerPage.click('@genderPickerConfirmButton')
    registerPage.assert.containsText('@genderField', '女士')
    browser.pause(1000)
    browser.end()
  }
如果您对所有内容都使用CSS,那么您的页面对象中不需要选择器(看起来就是这样)


来源:

我知道,但我在它的文档中看到它说:
或者如果您使用与默认相同的定位策略创建元素,您可以使用速记
,这是我使用的,但不知为什么我不知道faild@Jerry您是否尝试使用
选择器
关键字。是的,我终于使用了
selector
关键字,它起作用了,只是想知道为什么这个速记词不起作用。
  'select a gender option': function (browser) {
    const registerPage = browser.page.register();
    registerPage.assert.hidden('@genderPicker')
    registerPage.click('@genderField')
    browser.pause(1000)
    registerPage.click('@genderOptionLast')
    registerPage.click('@genderPickerConfirmButton')
    registerPage.assert.containsText('@genderField', '女士')
    browser.pause(1000)
    browser.end()
  }