angular 按顺序测试多个文件 - 等待 Protractor 与页面同步时出错
angular testing multiple files in sequence - Error while waiting for Protractor to sync with the page
从 Angular E2E 开始,并尝试测试多个文件(明智地划分测试用例模块)。
在 protractor.conf.js
中所做的更改
specs: [
"./src/login/login.component.e2e-spec.ts",
"./src/customs-portal/home.component.e2e-spec.ts",
],
这会以相同的顺序运行两个文件的测试用例。
在我写的家庭测试用例文件中
beforeAll(() => {
homePage= new HomePage();
helperService = new HelperService();
CSS = homePage.CSS;
helperService.navigate("/home");
helperService.skipIntro();
});
我导航到 /home,在主页上有 skip 按钮,我单击该按钮以避免页面介绍阶段。这是 skipIntro 函数的样子
async skipIntro(): Promise<any> {
const _skipBtn = await element(by.css(this.CSS.SKIP_INTRO));
console.log("HelperService -> _skipBtn", _skipBtn);
if (_skipBtn) {
_skipBtn.click();
}
}
但它显示错误并且未通过测试用例
it("dummy test always paas", async () => {
expect(true).toEqual(true);
});
这里是错误
- Error: Error while waiting for Protractor to sync with the page: "both angularJS testability and angular testability are 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"
这里是helperService.navigate
navigate(path: string): promise.Promise<any> {
return browser.get(path);
}
对此有任何帮助,Angular E2E 经验不多。
通过查看错误,我假设被测应用程序不是 Angular
应用程序。 Protractor 主要用于测试 angular 应用程序,但要测试 non-angular
应用程序,您可以执行以下配置更改,并且您可能不会收到此错误
browser.waitForAngularEnabled(false);
这将禁止在应用程序中搜索 angular 组件并执行测试。
似乎异步和控制流混合在一起,这似乎是个问题
试试这个应该有用
beforeAll(async () => {
homePage= new HomePage();
helperService = new HelperService();
CSS = homePage.CSS;
await helperService.navigate("/home");
await helperService.skipIntro();
});
async skipIntro(): Promise<any> {
const _skipBtn =await element(by.css(this.CSS.SKIP_INTRO));
console.log("HelperService -> _skipBtn", _skipBtn);
if (_skipBtn) {
await _skipBtn.click();
}
}
async navigate(path: string): promise.Promise<any> {
await return browser.get(path);
}
async skipIntro(): Promise<any> {
const _skipBtn = await element(by.css(this.CSS.SKIP_INTRO));
console.log("HelperService -> _skipBtn", _skipBtn);
if (_skipBtn) {
await _skipBtn.click();
}
}
async navigate(path: string): promise.Promise<any> {
await return browser.get(path);
}
从 Angular E2E 开始,并尝试测试多个文件(明智地划分测试用例模块)。
在 protractor.conf.js
中所做的更改specs: [
"./src/login/login.component.e2e-spec.ts",
"./src/customs-portal/home.component.e2e-spec.ts",
],
这会以相同的顺序运行两个文件的测试用例。
在我写的家庭测试用例文件中
beforeAll(() => {
homePage= new HomePage();
helperService = new HelperService();
CSS = homePage.CSS;
helperService.navigate("/home");
helperService.skipIntro();
});
我导航到 /home,在主页上有 skip 按钮,我单击该按钮以避免页面介绍阶段。这是 skipIntro 函数的样子
async skipIntro(): Promise<any> {
const _skipBtn = await element(by.css(this.CSS.SKIP_INTRO));
console.log("HelperService -> _skipBtn", _skipBtn);
if (_skipBtn) {
_skipBtn.click();
}
}
但它显示错误并且未通过测试用例
it("dummy test always paas", async () => {
expect(true).toEqual(true);
});
这里是错误
- Error: Error while waiting for Protractor to sync with the page: "both angularJS testability and angular testability are 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"
这里是helperService.navigate
navigate(path: string): promise.Promise<any> {
return browser.get(path);
}
对此有任何帮助,Angular E2E 经验不多。
通过查看错误,我假设被测应用程序不是 Angular
应用程序。 Protractor 主要用于测试 angular 应用程序,但要测试 non-angular
应用程序,您可以执行以下配置更改,并且您可能不会收到此错误
browser.waitForAngularEnabled(false);
这将禁止在应用程序中搜索 angular 组件并执行测试。
似乎异步和控制流混合在一起,这似乎是个问题
试试这个应该有用
beforeAll(async () => {
homePage= new HomePage();
helperService = new HelperService();
CSS = homePage.CSS;
await helperService.navigate("/home");
await helperService.skipIntro();
});
async skipIntro(): Promise<any> {
const _skipBtn =await element(by.css(this.CSS.SKIP_INTRO));
console.log("HelperService -> _skipBtn", _skipBtn);
if (_skipBtn) {
await _skipBtn.click();
}
}
async navigate(path: string): promise.Promise<any> {
await return browser.get(path);
}
async skipIntro(): Promise<any> {
const _skipBtn = await element(by.css(this.CSS.SKIP_INTRO));
console.log("HelperService -> _skipBtn", _skipBtn);
if (_skipBtn) {
await _skipBtn.click();
}
}
async navigate(path: string): promise.Promise<any> {
await return browser.get(path);
}