如何使用量角器检查负载性能?
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\']'));
}
...
我在 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\']'));
}
...