【问题标题】:Using execute command in Page Objects in Nightwatch JS在 Nightwatch JS 的页面对象中使用执行命令
【发布时间】:2017-03-29 15:46:55
【问题描述】:

我在 Nightwatch 中实现页面对象时遇到问题。假设我有一个登录场景。我需要滚动到元素 - 我正在使用 thar 执行功能。

module.exports = {  
   'Login' : function (browser) {
    browser.url(this.launchUrl)
       .setValue('input[name=username]', 'admin')
       .setValue('input[name=password]', 'password')
       .execute(function () {
            document.querySelector('input[type=submit]').scrollIntoView();
        }, [])
       .click('input[type=submit]');
    browser.end();
    }
}

我想像这样将这个登录代码重构为页面对象

module.exports = {  
  url: function() {
    return this.api.launchUrl;
  },
  commands: [scrolling],
  elements: {
    usernameField: {
      selector: 'input[name=username]'
    },
    passwordField: {
      selector: 'input[name=password]'
    },
    submit: {
     selector: 'input[type=submit]'
  }
  }
};

我也想“隐藏”这个执行命令并将其打包成命令,如下所示:

var scrolling = {
  scroll: function(){
    return this.execute(function () {
      document.querySelector(input[type=submit]').scrollIntoView();
    }, []);
  }
};

不幸的是,执行命令似乎不适用于页面对象。

当我想使用页面对象时,如何通过执行 JavaScript 代码来解决这个问题?怎么封装?

【问题讨论】:

  • 只是一个可能有用的注释。在我的情况下,execute 仅在作为字符串传递时才有效。例如.execute('document.querySelector('input[type=submit]').scrollIntoView();')
  • 但是你是在主测试文件(我的第一段代码)中使用它还是使用像这里这样的页面对象:nightwatchjs.org/guide#page-objects? execute() 可以包含函数或字符串nightwatchjs.org/api/execute.html
  • 我检查了建议的字符串,但没有解决问题。
  • api 文档中的页面对象中有一个可访问方法的列表:github.com/nightwatchjs/nightwatch/wiki/…

标签: javascript automated-tests frontend nightwatch.js pageobjects


【解决方案1】:

答案很简单 1) 选择器中缺少引号。 2) 在对象模式中使用 execute() 需要使用 this.api 运行它:

this.api.execute(function () {
             document.querySelector('input[type=submit]').scrollIntoView();
          }, []);

【讨论】:

    【解决方案2】:

    找到答案

    ForthStCheck:function(){
       this.api.execute('scrollTo(0,500)')
       this.waitForElementVisible('@forthStationPlayBtn',5000)
    }
    

    【讨论】:

    • 这仅适用于特定大小的页面吗?你能解释一下这段代码为什么有效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多