8

在我的 AngularJS 应用程序中,对于要加载的任何页面,有两件事正在加载,首先是页面内容,其次是一些后端资源。在加载后端资源时,一个微调器出现在前面,用户无法对页面内容执行任何操作。

现在,当我使用Protractor编写应用程序的自动化测试套件时,我找不到一种技术来等待微调器在开始测试之前从屏幕上消失。

请帮助我。

4

3 回答 3

11

IsDisplayed正如您在 Andres D 的评论中提到的那样,应该适合您的情况。但是,它返回一个承诺,所以你不能只使用

return !$('.spinner').isDisplayed()

因为那总是返回false。

试试下面的,看看它是否有效。

browser.wait(function() {
  return $('.spinner').isDisplayed().then(function(result){return !result});
}, 20000);
于 2014-01-15T04:37:31.413 回答
2

如果您正在等待某事发生,您可以使用browsser.wait()

例如,如果微调器具有类名“微调器”

browser.wait(function() {
  // return a boolean here. Wait for spinner to be gone.
  return !browser.isElementPresent(by.css(".spinner"));
}, 20000);

20000 是以毫秒为单位的超时。

您的测试将等到满足条件。

于 2014-01-07T17:36:15.433 回答
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

于 2019-01-11T12:02:17.357 回答