在我的AngularJS应用程序中,对于要加载的任何页面,有两件事正在加载 首先是页面的内容,其次是一些后端资源。 在加载后端资源时,前端会出现一个微调器,用户无法对页面内容执行任何操作。
现在,当我使用量角器编写应用程序的自动化测试套件时,我无法找到一种技术,等待微调器从中消失开始测试前的屏幕。
请帮助我。
答案 0 :(得分:11)
IsDisplayed
应该是适合你情况的正确评论。但是,它会返回一个承诺,因此您无法使用
return !$('.spinner').isDisplayed()
因为那总是会返回false。
尝试以下操作,看看它是否有效。
browser.wait(function() {
return $('.spinner').isDisplayed().then(function(result){return !result});
}, 20000);
答案 1 :(得分:2)
如果您正在等待某事发生,可以使用browsser.wait()
例如,如果微调器具有类名“spinner”
browser.wait(function() {
// return a boolean here. Wait for spinner to be gone.
return !browser.isElementPresent(by.css(".spinner"));
}, 20000);
20000是超时(以毫秒为单位)。
您的测试将等到符合条件。
答案 2 :(得分:0)
对于那些处理非角度应用程序的人:
browser.wait(
EC.invisibilityOf(element(by.css(selector))),
5000,
`Timed out waiting for ${selector} to not be visible.`
)
https://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.invisibilityOf