更新#2:使用$ timeout而不是$ interval追溯到Web应用程序。在等待页面同步的情况下解释http://www.protractortest.org/#/timeouts
更新:所以我投入browser.ignoreSynchronization=true; browser.sleep(5000);
进行第二次测试,它确实有效。不知道为什么....没有它,登录页面工作得很好。现在最好的猜测是它是一个正在运行的脚本,所以它永远不会完成同步????不确定为什么它不同步。
所以或多或少,为什么我需要忽略同步,知道网站是有角度的???????
我使用Protractor和Jasmine框架。
测试一直在努力达到这一点。
我认为量角器无法找到我的元素因此超时。我无法弄清楚为什么它不能找到我的元素,因为它在早期测试中完全没问题。
我的conf.js
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['spec.js'],
allScriptsTimeout: 10000,
onPrepare: function() {
var SpecReporter = require('jasmine-spec-reporter');
jasmine.getEnv().addReporter(new SpecReporter({displayStacktrace: 'all'}));
},
jasmineNodeOpts: {
showColors: true,
isVerbose: true,
realtimeFailure: true,
includeStackTrace: true,
defaultTimeoutInterval: 10000,
print: function() {}
}
};
当前spec.js
describe('Authorizing newly created account', function() {
//This test works fine
it('should navigate back to login and login', function() {
browser.get('website');
element(by.model('$parent.username')).sendKeys('user');
element(by.model('$parent.password')).sendKeys('test');
element(by.buttonText('Login')).click();
});
//This one doesn't
it('should navigate to organizations', function() {
//DOESN'T WORK
var button = element(by.id('btn_organizations'));
button.click();
});
});
我试图获取的HTML片段("组织"链接)
<li ng-if="user.administrator || user.organizationAdministrator">
<a ui-sref="organizations" ng-click="closeNav()" id="btn_organizations">
<span class="glyphicons glyphicons-tree-structure"></span>
<span class="hidden-sm"><g:message code="organizations" /></span>
</a>
</li>
我认为既然组织有ID
我可以用它来访问它,但是Protractor似乎并不喜欢它。
然后我收到错误
-Error:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用异步回调
我真的希望这不是一件让我感到愚蠢的事情。
答案 0 :(得分:0)
尝试所有这些选项,它应该与回调一起使用:
describe('Authorizing newly created account', function() {
beforeEach(function(done) {
done();
}, 10000);
//This test works fine
it('should navigate back to login and login', function() {
browser.get('website');
element(by.model('$parent.username')).sendKeys('user');
element(by.model('$parent.password')).sendKeys('test');
element(by.buttonText('Login')).click();
},10000);
//This one doesn't
it('should navigate to organizations', function() {
//DOESN'T WORK
var button = element(by.id('btn_organizations'));
button.click();
},10000);
},10000);
看看这个问题以及我如何解决它:Time out problem