无法在 e2e 量角器上 运行 自动化测试用例,Angular 2
Unable to run automated testcases on e2e protractor,Angular 2
我正在尝试 运行 一个简单的测试,但是测试失败了,因为量角器正在尝试与页面同步但不能,因为它不在 Angular 中。有什么想法需要改变吗?
配置文件:
exports.config = {
allScriptsTimeout: 11000,
specs : [
'./src/**/*.e2e-spec.ts',
'/pages/**/*.Tracker_pageobject.ts',
],
capabilities : {
'browserName': 'chrome'
},
directConnect : true,
baseUrl : 'http://localhost:4200/',
useAllAngular2AppRoots: true,
framework : 'jasmine',
规格文件:
describe('Test Application', () => {
beforeEach(() => {
browser.waitForAngularEnabled(false);
browser.driver.get(environment.url + "/login");
browser.driver.manage().window().maximize();
browser.waitForAngularEnabled(true);
});
it('should not open login page when user enters invalid Username & Password', () => {
var loginpage = new dashboard();
browser.sleep(2000);
loginpage.userName('abc');
browser.sleep(2000);
loginpage.password('cde');
loginpage.loginbtn();
element(by.className('mat-error ng-tns-c33-4 ng-star-inserted')).getText().then(function(value){
browser.waitForAngular();
browser.sleep(5000);
console.log(value);
});
browser.sleep(5000);
});
it('should not open login page when user enters spaces', () => {
browser.sleep(5000);
var loginpage = new dashboard();
loginpage.userName(' ');
browser.sleep(2000);
loginpage.password(' ');
loginpage.loginbtn();
element(by.className('mat-error ng-tns-c33-4 ng-star-inserted')).getText().then(function(value){
browser.waitForAngular();
browser.sleep(5000);
console.log(value);
});
browser.sleep(5000);
});
登录页面(POM).ts
import { browser, by, element } from 'protractor';
var loginpage = function(){
var userNamefield = element(by.css("input[formcontrolname = 'email']"));
var passwordfield = element(by.css("input[formcontrolname = 'password']"));
var loginbutton = element(by.xpath('//*[@id="login-form"]/form/button'));
var logoutbtn = element(by.xpath('//*[@id="main-navigation"]/fuse-nav-vertical-group/div[1]/ul/li[3]/a'));
this.userName = function(vusername){
userNamefield.sendKeys(vusername);
};
this.password = function(vpassWord){
passwordfield.sendKeys(vpassWord);
};
this.loginbtn = function(btn){
loginbutton.click();
};
收到以下消息:
失败:等待 Protractor 与页面同步时出错:“angularJS 可测试性和 angular 可测试性均未定义。这可能是因为这是非 angular 页面或者因为您的测试涉及客户端导航,这可能会干扰 Protractor 的引导。有关详细信息,请参阅 http://git.io/v4gXM
任何帮助将不胜感激
更改此块:
beforeEach(() => {
browser.waitForAngularEnabled(false);
browser.driver.get(environment.url + "/login");
browser.driver.manage().window().maximize();
browser.waitForAngularEnabled(true);
});
给这个:
beforeEach(() => {
browser.waitForAngularEnabled(false);
browser.driver.get(environment.url + "/login");
browser.driver.manage().window().maximize();
});
您无需等待 Angular。
另外,您可能需要看看 Selenium 中的 Explicit waiters
。
从规范中的 BeforeEach()
块中删除所有带有 browser.waitForAngularEnabled(....);
的行。并将 browser.waitForAngularEnabled(false);
添加到 protractor.conf
文件中的 onPrepare()
部分
我正在尝试 运行 一个简单的测试,但是测试失败了,因为量角器正在尝试与页面同步但不能,因为它不在 Angular 中。有什么想法需要改变吗?
配置文件:
exports.config = {
allScriptsTimeout: 11000,
specs : [
'./src/**/*.e2e-spec.ts',
'/pages/**/*.Tracker_pageobject.ts',
],
capabilities : {
'browserName': 'chrome'
},
directConnect : true,
baseUrl : 'http://localhost:4200/',
useAllAngular2AppRoots: true,
framework : 'jasmine',
规格文件:
describe('Test Application', () => {
beforeEach(() => {
browser.waitForAngularEnabled(false);
browser.driver.get(environment.url + "/login");
browser.driver.manage().window().maximize();
browser.waitForAngularEnabled(true);
});
it('should not open login page when user enters invalid Username & Password', () => {
var loginpage = new dashboard();
browser.sleep(2000);
loginpage.userName('abc');
browser.sleep(2000);
loginpage.password('cde');
loginpage.loginbtn();
element(by.className('mat-error ng-tns-c33-4 ng-star-inserted')).getText().then(function(value){
browser.waitForAngular();
browser.sleep(5000);
console.log(value);
});
browser.sleep(5000);
});
it('should not open login page when user enters spaces', () => {
browser.sleep(5000);
var loginpage = new dashboard();
loginpage.userName(' ');
browser.sleep(2000);
loginpage.password(' ');
loginpage.loginbtn();
element(by.className('mat-error ng-tns-c33-4 ng-star-inserted')).getText().then(function(value){
browser.waitForAngular();
browser.sleep(5000);
console.log(value);
});
browser.sleep(5000);
});
登录页面(POM).ts
import { browser, by, element } from 'protractor';
var loginpage = function(){
var userNamefield = element(by.css("input[formcontrolname = 'email']"));
var passwordfield = element(by.css("input[formcontrolname = 'password']"));
var loginbutton = element(by.xpath('//*[@id="login-form"]/form/button'));
var logoutbtn = element(by.xpath('//*[@id="main-navigation"]/fuse-nav-vertical-group/div[1]/ul/li[3]/a'));
this.userName = function(vusername){
userNamefield.sendKeys(vusername);
};
this.password = function(vpassWord){
passwordfield.sendKeys(vpassWord);
};
this.loginbtn = function(btn){
loginbutton.click();
};
收到以下消息: 失败:等待 Protractor 与页面同步时出错:“angularJS 可测试性和 angular 可测试性均未定义。这可能是因为这是非 angular 页面或者因为您的测试涉及客户端导航,这可能会干扰 Protractor 的引导。有关详细信息,请参阅 http://git.io/v4gXM
任何帮助将不胜感激
更改此块:
beforeEach(() => {
browser.waitForAngularEnabled(false);
browser.driver.get(environment.url + "/login");
browser.driver.manage().window().maximize();
browser.waitForAngularEnabled(true);
});
给这个:
beforeEach(() => {
browser.waitForAngularEnabled(false);
browser.driver.get(environment.url + "/login");
browser.driver.manage().window().maximize();
});
您无需等待 Angular。
另外,您可能需要看看 Selenium 中的 Explicit waiters
。
从规范中的 BeforeEach()
块中删除所有带有 browser.waitForAngularEnabled(....);
的行。并将 browser.waitForAngularEnabled(false);
添加到 protractor.conf
文件中的 onPrepare()
部分