我的每个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意味着身份验证没有通过.
有什么解决方案吗?
我也有这个问题,最后创建了一个自定义命令.您需要在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)
也许您可以使用“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)
| 归档时间: |
|
| 查看次数: |
5518 次 |
| 最近记录: |