gpt4 book ai didi

javascript - 如何将外部库附加到 Protractor 配置文件?

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:09 25 4
gpt4 key购买 nike

这是图书馆:

//library.js
var exports = module.exports = {};

exports.login = function(user_login, user_password) {
var input;
input = element(by.model('loginInfo.login'));
input.sendKeys(user_login);
expect(input.getAttribute('value')).toBe(user_login);
input = element(by.model('loginInfo.password'));
input.sendKeys(user_password);
expect(input.getAttribute('value')).toBe(user_password);
browser.sleep(1000);
browser.driver.actions().sendKeys(protractor.Key.ENTER).perform();
browser.sleep(1000);
};

这是我的配置文件:

   //config.js
var lib = require("./library.js");
exports.config = {
directConnect: true,
onPrepare: function() {
browser.driver.manage().window().maximize();
},

// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},

// Framework to use. Jasmine is recommended.
framework: 'jasmine',

// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['messages.js'],


// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 50000
}
};

以下是我在 messages.js 文件中调用登录 fn 的方法:

  lib.login('xxx', 'yyyyy');

但是,上面的最后一行给了我一个错误:“lib 未定义”

最佳答案

您似乎正在尝试从library.js 文件运行 Protractor 测试。

不要这样做,而是遵循 http://www.protractortest.org/#/ 的准则指示。即config.js文件用于配置环境,spec.js文件用于测试。因此,请尝试这样做:

/*
* library-spec.js
*/

var input;
describe('Login Test', function() {
it('should enter login information and send the Enter key to login', function() {
input = element(by.model('loginInfo.login'));
input.sendKeys(user_login);
expect(input.getAttribute('value')).toBe(user_login);

input = element(by.model('loginInfo.password'));
input.sendKeys(user_password);
expect(input.getAttribute('value')).toBe(user_password);

browser.sleep(1000);
browser.driver.actions().sendKeys(protractor.Key.ENTER).perform();
browser.sleep(1000);
});

});

配置文件将如下所示:

//config.js
exports.config = {
directConnect: true,
onPrepare: function() {
browser.driver.manage().window().maximize();
},

// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},

// Framework to use. Jasmine is recommended.
framework: 'jasmine',

// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['library-spec.js'],


// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 50000
}
};

但是,如果您需要在每次或所有测试之前运行该library.js 文件,请将其放入您的messages.js 文件中。

在您的 messages.js 文件中,您将在 describe block 中添加:

beforeEach(function() {
lib(username, password); //where username and password are string vars
});

beforeAll(function() {
lib(username, password); //where username and password are string vars
});

最后,如果您按原样保留 Library.js 文件,请进行一些清理:

//library.js
module.exports = login;

function login(user_login, user_password) {
var input;
input = element(by.model('loginInfo.login'));
input.sendKeys(user_login);
expect(input.getAttribute('value')).toBe(user_login);
input = element(by.model('loginInfo.password'));
input.sendKeys(user_password);
expect(input.getAttribute('value')).toBe(user_password);
browser.sleep(1000);
browser.driver.actions().sendKeys(protractor.Key.ENTER).perform();
browser.sleep(1000);
};

注意 module.exports 行如何替换您拥有的行。另外,我已将exports.login更改为功能登录。那么你会...

var login = require('./login');

login('user', 'pass');

哪里需要它。

关于javascript - 如何将外部库附加到 Protractor 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37623444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com