我需要测试两个不同版本的网站,其中一个网站的功能与另一个网站的功能略有不同。作为其中的一部分,我想使用相同的代码,但根据网站的IP地址,选择是否应该运行测试。有没有办法可以做到这一点。感谢。
答案 0 :(得分:1)
Make your website and login information included into your conf.js file so that it can be readily changed without modifying large amounts of your code.
// conf.js
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
params: {
login: {
username: '*****',
password: '*****',
},
website: {
url: '*****',
},
},
specs: 'spec.js'
}
Then, inside your spec.js file, try the following:
// spec.js
describe('General Testing', function() {
browser.driver.sleep(0).then(function() {
if(browser.params.website.url == 'www.gmail.com'){
it('should run this test', function() {
// **********
});
} else {
it('should run the second test', function() {
// **********
});
}
});
});
EDITED:
I realized afterwards, that your question might be referring more specifically to the ip address rather than a url. I looked through the protractor api, and found no direct way to access the ip. There are only commands like browser.driver.getCurrentUrl()
and browser.driver.getTitle()
. I believe you would have to use some sort of extra codebase, to obtain what you desire.
答案 1 :(得分:0)
如果您只想要测试两个环境,我会考虑简单地制作两个conf文件 - 每个环境一个 - 并将您的spec文件分成不同的文件夹,具体取决于您希望它们运行的环境。
第一个配置包含:
//env1conf.js
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['./common/*spec.js', './env1/*spec.js'],
onPrepare: function() {
browser.get('environment1');
}
}
第二个:
//env2conf.js
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['./common/*spec.js', './env2/*spec.js'],
onPrepare: function() {
browser.get('environment2');
}
}
在上面的示例中,您将拥有三个文件夹(common,env1和env2),每个文件夹都包含spec文件。然后,只需在运行量角器时引用一个配置或另一个配置,就可以在一个或另一个环境上运行测试:
> protractor env1conf
(将运行所有相关的规范,并针对您的environment1网址运行env1)
如果您想将测试从一个环境移动到另一个环境,或者将它们移动到“常见”中,这种方法也会变得更容易。如果它们与两者相关。如果您需要第三个环境,那么设置第三个配置文件就足够简单了。
请注意,在上面的配置文件中,我添加了onPrepare
语句,该语句将导航到相应的环境,但您可以轻松使用参数:
params: {
url : 'environment1'
}
如果您希望在实际规范中执行browser.get
语句:
browser.get(browser.params.url);