Selenium 量角器串行规范执行
在我的测试重构之后,我面临着一个奇怪的问题。为了显著减少执行时间,我不推荐使用beforeach/afterEach块,现在我连一个接一个运行简单规范都有问题。我已经创建了简单的配置和规范 配置:Selenium 量角器串行规范执行,selenium,jasmine,protractor,angularjs-e2e,e2e-testing,Selenium,Jasmine,Protractor,Angularjs E2e,E2e Testing,在我的测试重构之后,我面临着一个奇怪的问题。为了显著减少执行时间,我不推荐使用beforeach/afterEach块,现在我连一个接一个运行简单规范都有问题。我已经创建了简单的配置和规范 配置: exports.config = { seleniumAddress: 'http://localhost:4444/wd/hub', specs: [ 'googleSpec.js', 'forgotPasswordPageTestSuite.js'
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 Verify search inout显示消息:
期望假为真。堆栈跟踪:
错误:预期失败
在[对象]。(/Users/sergeyteplyakov/webstormpprojects/e2eMPP20/googleSpec.js:13:54)
用6.339秒完成2次测试,2次断言,1次失败
[launcher]0个WebDriver实例仍在运行[launcher]chrome
1个失败的1个测试[launcher]总体:1个失败的规范[launcher]进程退出,错误代码为1
进程已完成,退出代码为1
在我的实际测试中,当我的规范与我提供的规范相似时,我也遇到了同样的问题。当我看到由于某种原因真正发生的事情时,在第一个规范完成之前,第二个规范中的get(url)方法开始执行。我想我遗漏了一些核心和重要的东西,有人能告诉我吗)我认为在这种设置下,
量角器
不能保证执行等待()
调用并等待结果,然后再执行它()
如果您希望在规范中的所有it
块之前执行某些代码,请使用beforeAll()
(Jasmine 2中内置,可作为Jasmine 1.x的版本提供):
还请注意,您可以使用来简化wait()
块:
var EC = protractor.ExpectedConditions;
var elm = element(by.name('q'));
browser.wait(EC.visibilityOf(elm), 15000);
我试着把所有的积木都包括进去,但都没有用。另外,在我的实际测试中,我只是在第一个“it”块之前的第二个套件中放入所有代码,然后再开始工作,这真是太棒了weird@SergeyTeplyakov谢谢,如果您移动
browser.ignoreSynchronization=true编码>到onPrepare()
?
var EC = protractor.ExpectedConditions;
var elm = element(by.name('q'));
browser.wait(EC.visibilityOf(elm), 15000);