首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >`page_objects_path`字段在nightwatch.config.js中无效

`page_objects_path`字段在nightwatch.config.js中无效
EN

Stack Overflow用户
提问于 2018-08-14 19:08:27
回答 2查看 497关注 0票数 1

我在nightwatch中使用页面对象,在nightwatch.conf.js中配置page_objects_path,但当我引用这些已定义的元素时,得到了错误。我不知道为什么,我使用vue-cli来构建这个项目。下面是我的配置:

nightwatch.conf.js

代码语言:javascript
复制
...
page_objects_path: 'test/e2e/pages',
...

页面对象文件register.js

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

在测试文件中使用页面对象:

代码语言:javascript
复制
'select a gender option': function (browser) {
    browser
      .assert.hidden('@genderPicker')
      .click('@genderField')
      .pause(1000)
      .click('@genderOptionLast')
      .click('@genderPickerConfirmButton')
      .assert.containsText('@genderField', '女士')
      .pause(1000)
      .end()
  }

错误信息:

EN

回答 2

Stack Overflow用户

发布于 2018-08-17 18:01:12

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

代码语言:javascript
复制
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'
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-08-21 07:58:47

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

代码语言:javascript
复制
  '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来处理所有事情,那么就不需要在页面对象中使用选择器(看起来就是这样)。

来源:http://nightwatchjs.org/guide#page-objects

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51840023

复制
相关文章

相似问题

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