等待量角器中的http请求完成

时间:2017-03-16 17:30:59

标签: protractor jasmine2.0

我正在等待微调器消失,然后我的步骤才能执行,但没有任何对我有效。

  

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请求完成,然后进行测试

1 个答案:

答案 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()
  });
});