1

我正在尝试等待微调器消失,然后执行我的步骤,但没有什么对我有用。

browser.wait(函数(){

返回 this.spinner.isDisplayed().then(function (result) {

返回 !result;});}, 20000);

我什至尝试过

browser.wait(函数(){

return !browser.isElementPresent(this.spinner);}, 20000);

即使使用以下方法

browser.sleep(1000);

this.spinner.isPresent().then(function (result) {

如果(结果 === 真){

var EC = protractor.ExpectedConditions;

browser.wait(EC.invisibilityOf(this.spinner), 10000);}});

那么唯一有效的是

浏览.sleep(10000);

我不想在我的代码中使用睡眠。任何人都可以帮助我如何等待完整的http请求完成然后进行测试

4

1 回答 1

2

您应该考虑使用预期条件,因为它们根据当前条件返回真/假

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()
  });
});
于 2017-03-16T18:28:01.957 回答