如何动态加载launch_url并为其附加相对路径

时间:2015-02-26 19:50:47

标签: nightwatch.js

我正在尝试在我的测试中使用属性launch_url,并在将浏览器发送到该网址之前附加相对路径。

我知道browser.init();将浏览器发送到launch_url中的地址,但我想知道是否可以在执行重定向之前将一些字符串附加到检索到的网址。

假设我launch_urlwww.xxx.com,我想做类似的事情:

this.test = function (client) {
    client.init("/a/b/c"); // >> should result in the browser going to www.xxx.com/a/b/c 
};

有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:9)

如果您指定了" launch_url"在您的nightwatch.json文件中,您可以在'客户端'对象传入您的测试。例如:

module.exports = {
    'Demo test Google' : function (client) {
        client
            .url(client.launch_url)
            .waitForElementVisible('body', 1000)
            .setValue('input[type=text]', 'nightwatch')
            .waitForElementVisible('button[name=btnG]', 1000)
            .click('button[name=btnG]')
            .pause(1000)
            .assert.containsText('#main', 'Night Watch')
            .end();
    }
};

因此,对于您的示例代码:

this.test = function (client) {
  client.url(client.launch_url + "/a/b/c"); // >> should result in the browser going to www.xxx.com/a/b/c 
};

答案 1 :(得分:0)

另一种方法是创建一个包含一些基本项的配置文件;然后能够通过您使用的自定义init方法附加该配置文件。

IE:

var configDefaults = module.exports = {
   baseUrl: 'http://www.example.com/',
   local: false,
}; 

然后在您的自定义命令中写下类似的内容:

"use strict";
var config = require('./config')

exports.command = function(urlModifier) {
  var _self = this;
  _self
    .url(config.baseUrl+urlModifier)
    .waitForElementVisible('body', 4000)

  if( typeof callback === "function"){
    callback.call(_self);
  }
  return this;
};