我有一个问题,当页面被重定向时,量角器的执行挂起。
describe('describe something', () => {
beforeAll(() => {
helpers.login();
page.elementThatNavigatesToAnotherPage.click();
});
afterAll(() => {
helpers.logout();
});
it('should something', () => {
expect(page.someElement.isPresent()).toBe(true);
});
});
只要page.elementThatNavigatesToAnotherPage.click()
在beforeAll()
中,量角器的执行就会挂起并超时。如果删除它,该测试将通过/失败并继续运行其他测试。
我的login()
函数如下所示:
export function login(): void {
const loginPage = new LoginPage();
browser.get('#/login');
browser.wait(until.presenceOf(elementOnLoginPage), TIMEOUT).then(() => {
loginPage.submit('username', 'password');
loginPage.optionButton.click();
browser.wait(until.presenceOf(elementOnNextPage), TIMEOUT);
});
}
答案 0 :(得分:0)
您的登录功能似乎有缺陷。量角器功能wait,click和submit都是异步的。他们回报了诺言。这意味着您必须等待返回的承诺解决,然后才能继续执行。 例如
loginPage.submit('username', 'password')
.then(() => {
loginPage.optionButton.click()
.then(() => {
browser.wait(until.presenceOf(elementOnNextPage), TIMEOUT);
});
});
答案 1 :(得分:0)
正如@Robert所提到的,您需要等到helpers.login()函数返回一个Promise。这是我当前使用的代码段
describe('Go to login page and then admin', () => {
beforeAll(() => {
navigateTo('login').then(()=> {
<do something>
});
navigateTo('admin');
});
});
navigateTo(path: string) {
browser.waitForAngularEnabled(true);
return browser.get(path).then(() => {
browser.waitForAngularEnabled(false);
});
}