如何检测期望是否在 Jasmine/Protractor 中失败

How to detect whether an expectation failed in Jasmine/Protractor

我正在尝试测试一个页面,该页面一旦完全加载完毕,就会在服务器端生成 RSA 密钥对,这在我当前的设置下需要 5 到 20 秒。在浏览器收到密钥对之前,不允许用户执行任何操作。

我一直在使用 browser.sleep(),但如果密钥对是在 5 中生成的,则等待 20 秒很烦人。我尝试使用 Protractor 的 evaluate() 方法作为 while 循环条件,但意识到 evaluate() returns 是一个 ElementFinder 而不是参数的值。是否有一种方法允许 Jasmine/Protractor 以与 Jasmine 计算 toBe/toEqual/etc 相同的方式计算布尔值?

简而言之,

expect(controller.evaluate('data.step1.done')).toBe(true);

计算一个布尔值,相当于 Angular 范围内 evaluate() 的参数值,它与 "true" 进行比较。有没有办法使用该计算值或自己计算?

这里的思路是用browser.wait()等待模糊内容消失:

browser.driver.wait(function() {
    return !browser.driver.isElementPresent(by.css(".blurred"));
}, 20000)
.then(
  function() {
    // success code
  },
  function() {
    // fail code
  }
);

在这种情况下,它将等待 最多 20 秒。模糊内容消失后会立即停止等待