在我的 AngularJS 应用程序中,对于要加载的任何页面,有两件事正在加载,首先是页面内容,其次是一些后端资源。在加载后端资源时,一个微调器出现在前面,用户无法对页面内容执行任何操作。
现在,当我使用Protractor编写应用程序的自动化测试套件时,我找不到一种技术来等待微调器在开始测试之前从屏幕上消失。
请帮助我。
在我的 AngularJS 应用程序中,对于要加载的任何页面,有两件事正在加载,首先是页面内容,其次是一些后端资源。在加载后端资源时,一个微调器出现在前面,用户无法对页面内容执行任何操作。
现在,当我使用Protractor编写应用程序的自动化测试套件时,我找不到一种技术来等待微调器在开始测试之前从屏幕上消失。
请帮助我。
IsDisplayed
正如您在 Andres D 的评论中提到的那样,应该适合您的情况。但是,它返回一个承诺,所以你不能只使用
return !$('.spinner').isDisplayed()
因为那总是返回false。
试试下面的,看看它是否有效。
browser.wait(function() {
return $('.spinner').isDisplayed().then(function(result){return !result});
}, 20000);
如果您正在等待某事发生,您可以使用browsser.wait()
例如,如果微调器具有类名“微调器”
browser.wait(function() {
// return a boolean here. Wait for spinner to be gone.
return !browser.isElementPresent(by.css(".spinner"));
}, 20000);
20000 是以毫秒为单位的超时。
您的测试将等到满足条件。
对于那些处理非角度应用程序的人:
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