我正在使用量角器测试页面。在各种测试用例中,我需要等到对象加载完毕。以下是脚本的摘录。虽然这不会显示任何错误,但它无法等待对象出现,并且测试用例会失败,直到页面能够赶上。
login.e2e-spec.ts
it('should display company logo', () => {
page.navigateTo();
page.clickImplicitGrantButton()
.then(() => browser.wait(ExpectedConditions.visibilityOf(browser.getLogo()), 10000))
.then(() => page.isLogoVisible()
.then((isVisible) => {
expect(isVisible).toBe(true);
}));
});
login.po.ts
clickImplicitGrantButton() {
return $('button.mat-button#implicit').click();
}
getLogo() {
return browser.driver.findElement(by.className('main-logo'));
}
isLogoVisible() {
return this.getLogo().isDisplayed();
}
答案 0 :(得分:0)
使用@tehbeardedone建议使用.element()
,我通过添加一行更改来发现修复。这是解决方案:
it('should display company logo', () => {
browser.ignoreSynchronization = true;
page.navigateTo();
page.clickImplicitGrantButton();
browser.wait(ExpectedConditions.visibilityOf(browser.element(by.className('main-logo'))), 10000)
.then(() => page.isLogoVisible()
.then((isVisible) => {
expect(isVisible).toBe(true);
}));
});
当我使用.element()
命令时,我不断收到错误:
- Failed: Error while waiting for Protractor to sync with the page: "window.angular is undefined. This could be either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping. See http://git.io/v4gXM for details"
进一步调查显示,由于页面是非角度的,因此无法与Protractor同步运行,您需要添加到测试用例中:
browser.ignoreSynchronization = true;
这将允许页面独立于脚本运行,并且必须在非角度页面上使用.wait()
。
感谢您的投入,我希望这对将来尝试做同样事情的其他人有所帮助!