如何使用量角器检查负载性能?

How to check load performance with Protractor?

我在 Angular 中编写了一个应用程序,其中一个功能是带有代码完成功能的搜索框。用户在搜索框中输入内容后,我会在 API 上获取可能的结果并显示。 我如何断言我的结果在页面中显示的时间不会超过 1 秒?

到目前为止,我已经尝试过以下代码但没有成功(即使使用 waitForAngularEnabled(false)):

home.po.ts

...
search(schoolName: string) {
  this.input
    .clear()
    .then(() => this.input.sendKeys(schoolName));
}

get results() {
  return element(by.id('_searchResults'));
}

get resultLinks() {
  return this.results
    .all(by.css('li a'));
}
...

home.e2e-spec.ts

it('should load the school results in less than 1s', () => {
  searchPage.navigateTo();
  browser.waitForAngularEnabled(false);

  searchPage.search('col');

  browser.wait(EC.visibilityOf(searchPage.results), 1000);
  expect(searchPage.resultLinks.count())
    .toBeGreaterThan(0);
});

即使我的超时为0,测试仍然通过!好像它永远不会超时!我到底错过了什么?任何人都可以提供线索吗?

终于,我让它按预期工作了。问题是我的 css 选择器不太正确,因为我在列表 的底部有一个固定的 li。这就是 browser.wait 上的条件始终为真的原因。我必须添加一个属性选择器以区分动态项目和固定项目。

这是我的最终页面对象:

home.po.ts

...
search(schoolName: string) {
this.input
    .clear()
    .then(() => this.input.sendKeys(schoolName));
}

get results() {
return element(by.id('_searchResults'));
}

get resultLinks() {
return this.results
    .all(by.css('li a[id^=\'_schoolLink\']'));
}
...