代码之家  ›  专栏  ›  技术社区  ›  Jerry

`page\u objects\u path`字段在中不起作用nightwatch.config.js

  •  1
  • Jerry  · 技术社区  · 8 年前

    page_objects_path 在夜表.conf.js,但当我引用这些定义的元素时,得到了错误。我不知道为什么。我用vue cli来构建项目。 以下是我的配置:

    nightwatch.conf.js

    ...
    page_objects_path: 'test/e2e/pages',
    ...
    

    页面对象文件 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'
      }
    }
    

    在测试文件中使用page对象:

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

    错误信息: error info

    2 回复  |  直到 6 年前
        1
  •  0
  •   Alapan Das    8 年前

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

    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'
            }
        }
    }
    
        2
  •  0
  •   pschroeder89    8 年前

    您需要将页面对象定义为测试顶部的常量,然后从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(看起来像是这样),那么页面对象中就不需要选择器。

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