Protractor 在量角器中等待http请求完成

Protractor 在量角器中等待http请求完成,protractor,jasmine2.0,Protractor,Jasmine2.0,我试图等待微调器消失,然后等待我的步骤执行,但没有任何东西对我起作用 browser.wait(函数(){ 返回此.spinner.isDisplayed().then(函数(结果){ return!result;});},20000) 我甚至还试过 browser.wait(函数(){ return!browser.isElementPresent(this.spinner);},20000) 即使使用下面的方法 浏览器睡眠(1000) this.spinner.isPresent().the

我试图等待微调器消失,然后等待我的步骤执行,但没有任何东西对我起作用

browser.wait(函数(){

返回此.spinner.isDisplayed().then(函数(结果){

return!result;});},20000)

我甚至还试过

browser.wait(函数(){

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

即使使用下面的方法

浏览器睡眠(1000)

this.spinner.isPresent().then(函数(结果){

如果(结果==真){

var EC=量角器。预期条件

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

那么唯一有效的就是

浏览。睡眠(10000)


我不想在代码中使用睡眠。有人能帮助我如何等待完整的HTTP请求完成,然后用测试

< P>处理,因为根据当前条件

返回true / false,应该考虑使用预期条件。

因此,您的测试用例将成为:

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

你能提供这是什么吗?旋转器?当你说它失败了,那是什么意思?您是否收到任何错误?this.spinner是微调器的xpath,“element(by.xpath('//div[contains(@class=“spinner”)]”),问题是如果微调器在时间过去之前没有显示,那么我们会收到错误消息,说找不到元素。在您的回调中(即
。然后
)您正在调用
完成()
是否标记异步完成?否。我不知道是否已完成()您能帮助我吗?我也会尝试。有关详细信息,请参阅更新