我正在等待微调器消失,然后我的步骤才能执行,但没有任何对我有效。
browser.wait(function(){
返回this.spinner.isDisplayed()。then(function(result){
return!result;});},20000);
我甚至尝试过
browser.wait(function(){
return!browser.isElementPresent(this.spinner);},20000);
即使使用以下方法
browser.sleep(1000);
this.spinner.isPresent()。then(function(result){
if(result === true){
var EC = protractor.ExpectedConditions;
browser.wait(EC.invisibilityOf(this.spinner),10000);}});
然后唯一有效的是
browse.sleep(10000);
我不想在我的代码中使用sleep。任何人都可以帮助我如何等待完整的http请求完成,然后进行测试
答案 0 :(得分:1)
您应该考虑使用预期条件,因为它们会根据当前条件返回true / false
http://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.invisibilityOf
所以你的测试用例会变成:
browser.wait(EC.invisibilityOf(this.spinner),20000).then(function(){
...continue test, spinner gone
});
更新
为了使用done
,您通常会将此cb传递到it()
函数中。这意味着您的测试看起来像
describe("example describe",function(){
it("should be an example only", function(done){
request.get("www.google.com",function(res){
//done with async request, now call done
done();
})
})
});
由于您的整个代码未在此处发布,因此您应该有类似的内容:
it("should wait for spinner to go bye-bye",function(done){
browser.wait(EC.invisibilityOf(this.spinner),20000).then(function(){
done()
});
});