【发布时间】:2021-02-13 05:33:20
【问题描述】:
我正在尝试使用 Protractor 来测试我的团队的新 Angular 站点。目前,Protractor 项目不在本地,而是在不同的 repo 中,与 Angular 代码分开。登录页面不是有角度的,所以我们为登录页面运行waitForAngularEnabled(false),但是一旦我们登录我们运行waitForAngularEnabled(true)。
不幸的是,测试最终挂起并且由于超时而无法继续。这是堆栈跟踪...stacktrace
我阅读了一些关于 Protractor 执行的信息,它等待待处理的任务得到解决。当我在 devtools 控制台中运行getAllAngularTestabilities() 时,它显示有一个待处理的宏任务。这就是我的测试在waitForAngularEnabled(true) 之后挂起的原因吗?这是devtools控制台的图片...devtools console output
如果我不使用waitForAngularEnabled(true),那么我将不得不使用显式睡眠。我希望能够运行它并让测试正常运行。
这里是测试文件代码login.ts。 “beforeEach”块处理非角度登录,“it”块处理其余测试。
import { browser } from 'protractor';
import { LoginPage } from '../pageobjects/LoginPage';
import { SelectOrgPage } from '../pageobjects/SelectOrgPage';
import { MainPage } from '../pageobjects/MainPage';
describe('Login', () => {
beforeEach(async () => {
// Make sure to set the ignoreSynchronization for every testrun
// for non Angular applications
// browser.ignoreSynchronization = true;
await browser.driver.manage().window().maximize();
const loginPage = new LoginPage();
await browser.waitForAngularEnabled(false);
await loginPage.open(site-address);
await loginPage.typeIntoEmailAddressInput(Email);
await loginPage.typeIntoPasswordInput(Password);
await loginPage.clickSigninBtn();
await browser.sleep(5000);
});
it('go to resources', async () => {
await browser.waitForAngularEnabled(true);
// await browser.refresh();
// await browser.sleep(10000);
const mainPage = new MainPage();
await mainPage.clickResourcesTab();
await mainPage.clickCropsSideNav();
});
});
【问题讨论】:
标签: javascript angular protractor automated-tests