2017-01-24 38 views
1

我使用browser.wait来处理登录页面上的微调,但它实际上等待我作为第三个参数传递的整个时间。在量角器显式等待不起作用

当我在15分钟后出现主页时,我应该继续下一个测试用例,因为我已经提供了20分钟的等待时间。任何人都可以在这里帮忙。

it('test case', function() { 
     loginPage.login(browser.params.Login.username, browser.params.Login.password); 
     browser.wait(function() { 
     loginPage.Spinner().then(function(presenceOfElement) { 
      logger.info('App is waiting for spinner to complete'+ presenceOfElement); 
      return !presenceOfElement 
     }, 20*60*1000); 
     }); 
    }); 
+1

假设你正在等待微调消失 - 你是否尝试过使用invisibilityOf的预期条件? http://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.invisibilityOf。 – Grasshopper

+0

你可以发布你的'微调()'功能吗?看起来,它不是解决诺言 - 即我在这里阅读http://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.wait –

+0

@ bob.mazzo这里是我的页面对象函数。 this.Spinner = element(by.tagName('a')); this.Spinner = function(){ return browser.isElementPresent(this.Spinner); }; – tyaga001

回答

0

我建议重写页面对象和测试,使之更加明确什么是测试正在进行。试试这个:

// loginPage page object 
this.getSpinner = function() { 
    return element(by.tagName('a')); 
}; 

// test 
browser.wait(function() { 
    return loginPage.getSpinner().isPresent().then(function (isSpinnerPresent) { 
     return !isSpinnerPresent; 
    )}; 
}, 20*60*1000); 
+0

以上解决方案的结果也一样。测试用例正在等待整个20分钟,即使登录微调器在5分钟内也会进入 – tyaga001

+0

确定您的微调元素不仅隐藏了,但是5分钟后仍然存在于DOM中?在这种情况下,你需要测试'isDisplayed()'而不是'isPresent()'。 – finspin

+0

登录后没有元素没有隐藏,因为我把记录器和它返回false。 Logger results- downloadtrue [2017-01-25 09:58:29.883] [INFO] [default] - 应用正在等待初始内容下载失败 [2017-01-25 09:59:06.659] [INFO] [默认] - 应用程序正在等待初始内容 – tyaga001