我正在寻找有人告诉我当我使用chromedriver和selenium运行带有webdriverIO的Testdrive时,我怎样才能避免每次重新输入用户名和密码。我想要的是优化我的testdrive。一些线索???
这两个文件是一个模块的一部分,系统中有4个模块
第一个文件:
var name = 'Andrea' + Math.floor((Math.random() * 1000000) + 1);
var ssn = 'V-' + Math.floor((Math.random() * 1000000) + 1);
var url = 'http://someurl.com';
var new_contact = 'https://someurl.com/client/add';
describe('Some contact is create', function(){
it('Should login to the system', function(){
browser.url(url)
browser.setValue('#email','xxxxxxxx@xxxx.com')
browser.setValue('#password','xxxxxx')
browser.click('#submit');
});
it('Should be fill the form', function(){
browser.url(new_contact)
browser.waitForVisible('#addClient')
browser.setValue('#clientNameTextField-inputEl',name)
browser.setValue('#clientIdentidicationTextField-inputEl',ssn)
browser.setValue('#clientAddressTextField-inputEl','El busque')
browser.setValue('#clientCicyyTextField-inputEl','Valencia')
browser.setValue('#clientEmailField-inputEl','salvador.salvatierra@alegra.com')
browser.setValue('#clientPhoneTextField-inputEl','04141234567')
browser.setValue('[name="phone2"]','04147654321')
});
it('the contact is store',function(){
browser.click('=save)
browser.waitForExist('#viewClientInfoBalances')
browser.end;
});
});
第二档:
var url = 'http://someurl.com';
describe('We get the basic info from index contact', function(){
it('Shouldlogin to the system', function(){
browser.url(url)
browser.setValue('#email','xxxxxxxx@xxx.com')
browser.setValue('#password','xxxxx')
browser.click('#submit');
});
it('We should see the basic info', function(){
browser.click('[href="/client"]')
browser.click('#gridview-1043-record-ext-record-66 .action-icons a:nth-child(1)')
browser.waitForExist('#viewClientInfoBalances')
browser.end();
});
});
答案 0 :(得分:4)
我看到了不同方法的三种可能解决方案:
1. 创建登录设置:
由于我发现您正在使用 Mocha ,因此我会在.before()
挂钩中的所有测试用例之前运行您的登录代码段:
describe("StackOverflow Test Suite", function() {
before(function() {
return browser
.url(url);
.setValue('#email','xxxxxxxxxxx@xxxx.com')
.setValue('#password','xxxxxxxx')
.click('#submit');
});
it("\nYour first test...\n", function() {
return ...
});
it("\nYour second test...\n", function() {
return ...
});
});
Obs:每个测试套件都会运行.before()
挂钩 ONLY ONCE 。如果您有不同的测试套件(describe
语句),您需要在每个测试用例中登录,请使用.beforeEach()
挂钩。
更新!!! 根据萨尔瓦多的要求,在评论部分,此部分已添加。
您有两种方法可以实现这一目标:
在wdio.config.js
beforeSuite
挂钩中移动登录:
// Hook that gets executed before the suite starts
beforeSuite: function (suite) {
return browser
.url(url);
.setValue('#email','xxxxxxxxxxx@xxxx.com')
.setValue('#password','xxxxxxxx')
.click('#submit');
},
创建一个main.js
文件,您可以在其中注入所有"模块" 。您只能从该文件登录并通过describe
注入所有require
- 填充的文件:
<强>注射器:强>
function importTest(name, path) {
describe(name, function() {
require(path);
});
}
<强> main.js:强>
describe("All your tests go here!", function () {
// Executes its content before each imported feature
beforeEach(function() {
// beforeHooks
});
// Imported features/module files
importTest('Clients module', '../modules/clients.js');
//importTest('Devices module', '../modules/devices.js');
// Executes its content after all features have executed
after(function () {
// afterHooks
});
});
2. 加载自定义配置文件:
browser.debug()
; C:\Users\<yourUserName>\Desktop\scoped_dir18256_17319\Default
,复制桌面上的 scoped_dir18256_17319 文件夹。此文件夹包含此当前实例的所有操作(搜索历史记录,已安装的扩展程序,已保存的帐户 / 保存的凭据); 现在我们需要做的就是将wdio.config.js
文件中该文件夹的路径添加为chromeOptions
参数:
chromeOptions: {
//extensions: ['./browserPlugins/Avira-SafeSearch-Plus_v1.5.1.crx'],
args: [ '--user-data-dir=/Users/<yourUserName>/Desktop/scoped_dir18256_17319'
]
}
现在,您只需使用此自定义配置文件运行测试用例,您将使用首选的用户名/密码组合登录。
视频:您可以详细了解自定义配置文件 HERE ,使用自定义配置文件部分。
第3。加载身份验证Cookie (不会在所有网站上工作)
cookies
中的凭据等信息); .cookie()
或.setCookie()
方法添加确切的Cookie(您加载网址后)。代码应如下所示:
browser.setCookie({name: '<AuthCookieName>', value: '<AuthToken>'});
browser.refresh();
// Sometimes you have to refresh twice
browser.refresh();
// Assert you are logged in
请参阅 THIS 回答我将一个类似的问题作为示例。
希望这会对你有所帮助。干杯!