如何在每个夜班测试中跳过登录

Tod*_*odo 4 nightwatch.js

我的每个Nightwatch.js测试都需要身份验证才能运行,目前我无法通过cookie进行身份验证(当然,如果测试填写了它登录的用户名和密码,但这需要时间)

我有一个工作的PHPSESSID(在Fiddler测试)cookie并试图通过nightwatch setCookie函数设置它像这样:

browser
    .setCookie({
        name     : "PHPSESSID",
        value    : "gfnpqlflvlrkd2asj18ja2ewrt",
        path     : "/admin", //(Optional)
        domain   : "example.com", //(Optional)
        secure   : true, //(Optional)
        httpOnly : false // (Optional)           
    })        
    .url("www.example.com/admin")
Run Code Online (Sandbox Code Playgroud)

然而,www.example.com/admin重新定向回到www.example.com/login意味着身份验证没有通过.

有什么解决方案吗?

tra*_*k13 5

我也有这个问题,最后创建了一个自定义命令.您需要在nightwatch测试文件夹中创建一个名为custom-commands的新文件夹.在nightwatch.JSON文件中,您需要指定此文件夹的路径,如下所示:

 "custom_commands_path" : "./nightwatch-tests/custom-commands"
Run Code Online (Sandbox Code Playgroud)

使用登录步骤在此新文件夹中创建一个新的测试字段,并在每个测试开始时使用该名称作为新命令.例如,我的文件名为"login.js",它看起来像这样:

var load_speed = 5000,
local_login_url = "https://";

exports.command = function(username, password) {

  this
    .url(local_login_url)
    .waitForElementVisible('.login', load_speed)
    .setValue('input[type=text]', username)
    .setValue('input[type=password]', password)
    .click('input[type=submit]')
    .pause(load_speed)
    .assert.elementPresent('.dashboard')

  return this;
};
Run Code Online (Sandbox Code Playgroud)

当我在测试中调用自定义命令时,它看起来像这样:

.login(username, password)
Run Code Online (Sandbox Code Playgroud)


Nic*_*nec 1

也许您可以使用“before”或“beforeEach”挂钩。

http://nightwatchjs.org/guide#using-before-each-and-after-each-hooks

module.exports = {

  before : function(browser) {
    console.log('before all tests');
  },

  beforeEach : function(browser) {
    console.log('before each test');
  },

  afterEach : function(browser) {

  },

  "test one" : function (browser) {
    browser
     // ...
  },

  "test two" : function (browser) {
    browser
    // ...
      .end();
  }
};
Run Code Online (Sandbox Code Playgroud)