我的测试重构后遇到了奇怪的问题。为了大大减少执行时间,我在每个/每个块之前的所有地方都弃用了,现在我有一个接一个地运行简单规格的问题。我已经创建了简单的配置和规范。
配置:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: [
'googleSpec.js',
'forgotPasswordPageTestSuite.js'
],
capabilities:
{
browserName: 'chrome'
//shardTestFiles: true,
//maxInstances: 2
},
jasmineNodeOpts: {
defaultTimeoutInterval: 360000
}
}
规范1:
describe("Google Spec", function()
{
browser.ignoreSynchronization = true;
browser.get('http://google.com');
browser.wait(function () {
return element(by.name('q')).isDisplayed();
}, 15000);
it('Verify search inout is presented', function()
{
expect(browser.isElementPresent(element(by.name('q'))).toBe(true);
});
});
规范2:
describe("Yandex spec", function()
{
browser.ignoreSynchronization = true;
browser.get('http://www.yandex.ru');
browser.wait(function () {
return element(by.id('text')).isDisplayed();
}, 15000);
});
it('Verify that search input is presented', function()
{
expect(browser.isElementPresent(by.id('text'))).toBe(true);
});
});
如果我单独使用
执行它们shardTestFiles: true,
maxInstances: 2
这没关系,但是当我有上面的配置时,我有这样的例外:
[launcher]运行WebDriver F的1个实例。
故障:
1)Google Spec验证搜索输入显示消息: 预计错误是真的。堆栈跟踪: 错误:期望失败 在[object Object]。 (/Users/sergeyteplyakov/WebstormProjects/e2eMPP20/googleSpec.js:13:54)
在6.339秒完成2次测试,2次断言,1次失败
[launcher] WebDriver的0个实例仍在运行[launcher] chrome
1次失败1次测试[发射器]整体:1次失败规格[启动器]进程退出,错误代码为1
使用退出代码1完成处理
在我的实际测试中,我有同样的问题,当我的规格与我提供的相似时。当我看起来由于某种原因真正发生的事情。来自第二个规范的.get(url)方法在第一个规范完成之前开始执行。我想我错过了核心和重要的东西,有人可以指点我吗)
答案 0 :(得分:3)
我认为使用此设置无法保证protractor
执行wait()
调用并在执行it()
之前等待结果。
如果您希望在规范中的所有it
块之前执行某些代码,请使用beforeAll()
(内置于Jasmine 2中,可用作Jasmine 1的third-party。 X):
describe("Google Spec", function()
{
beforeAll(function () {
browser.ignoreSynchronization = true;
browser.get('http://google.com');
browser.wait(function () {
return element(by.name('q')).isDisplayed();
}, 15000);
});
it('Verify search inout is presented', function()
{
expect(browser.isElementPresent(element(by.name('q'))).toBe(true);
});
});
另请注意,您可以使用Expected Conditions来简化wait()
阻止:
var EC = protractor.ExpectedConditions;
var elm = element(by.name('q'));
browser.wait(EC.visibilityOf(elm), 15000);