量角器找不到 angular 来自非 angular 站点
Protractor cannot find angular came from non angular site
在量角器中,我搜索了一个工作正常的 LinkText 登录。我被重定向到登录站点(非 angular)并输入用户名和密码。单击提交按钮我回到了第一个站点。现在登录按钮是注销按钮。但是量角器看不到 angular 站点我只能找到带有硒指示器的按钮。
spec.js 文件:
it ('should have a login Button to click', function() {
loginPage.clickLoginButton();
});
it('should be on idm to login', function() {
var url = browser.driver.getCurrentUrl();
expect( url ).toEqual('http://localhost/webapp/login');
});
it('should have access with the given user', function() {
var idmPage = require('./idmPage.js');
idmPage.setUsername('bla');
idmPage.setPassword('secret');
idmPage.clickSubmitButton();
});
pageobject.js:
var IdmPage = function() {
var userField = browser.driver.findElement(by.id('id_login'));
var passwordField = browser.driver.findElement(by.id('id_password'));
var submitButton = browser.driver.findElement(by.id('authentication-button'));
this.setUsername = function(username) {
userField.sendKeys(username);
};
this.setPassword = function(password) {
passwordField.sendKeys(password);
};
this.clickSubmitButton = function() {
submitButton.click();
}; }; module.exports = new IdmPage();
conf.js
'use strict';
var baseDir = 'test/e2e';
exports.config = {
// The adress of a runnung selenium server.
seleniumAddress: 'http://localhost:4444/wd/hub',
//Capabilities to be passed to the webdirver instance.
capabilities: {
browserName: 'chrome'
},
//Spec patterns are relative to the current working directly when protractor is called
suites: {
login: baseDir + '/login/**/*_spec.js',
content: [baseDir + '/content/*_spec.js']
},
//Options to be passed to Jasmine-node
jasmineNodeOpts: {
onComplete: null,
isVerbose: true,
showColors: true,
includeStackTrace: false,
defaultTimeoutInterval: 11000
}
};
您可能需要确保在非 angular 和 angular 页面之间切换时量角器实际上正在等待您的输入加载。那么您是否尝试在单击提交按钮后使用 browser.sleep()
或 browser.wait()
?测试非 angular 页面时应设置 browser.ignoreSynchronization = true;
。
更新:
browser.ignoreSynchronization = true;
this.clickLogoutButton = function(){
browser.wait(function(){
return loginButton.isPresent();
}, 10000).then(function(){
loginButton.click();
});
}
这样您的测试将在测试超时前最多等待 10 秒。您可以根据按钮出现可点击之前最多需要多长时间来更新它。这就是我处理非 angular 网页测试的方式。我希望这对你有用
在量角器中,我搜索了一个工作正常的 LinkText 登录。我被重定向到登录站点(非 angular)并输入用户名和密码。单击提交按钮我回到了第一个站点。现在登录按钮是注销按钮。但是量角器看不到 angular 站点我只能找到带有硒指示器的按钮。
spec.js 文件:
it ('should have a login Button to click', function() {
loginPage.clickLoginButton();
});
it('should be on idm to login', function() {
var url = browser.driver.getCurrentUrl();
expect( url ).toEqual('http://localhost/webapp/login');
});
it('should have access with the given user', function() {
var idmPage = require('./idmPage.js');
idmPage.setUsername('bla');
idmPage.setPassword('secret');
idmPage.clickSubmitButton();
});
pageobject.js:
var IdmPage = function() {
var userField = browser.driver.findElement(by.id('id_login'));
var passwordField = browser.driver.findElement(by.id('id_password'));
var submitButton = browser.driver.findElement(by.id('authentication-button'));
this.setUsername = function(username) {
userField.sendKeys(username);
};
this.setPassword = function(password) {
passwordField.sendKeys(password);
};
this.clickSubmitButton = function() {
submitButton.click();
}; }; module.exports = new IdmPage();
conf.js
'use strict';
var baseDir = 'test/e2e'; exports.config = {
// The adress of a runnung selenium server.
seleniumAddress: 'http://localhost:4444/wd/hub',
//Capabilities to be passed to the webdirver instance.
capabilities: {
browserName: 'chrome'
},
//Spec patterns are relative to the current working directly when protractor is called
suites: {
login: baseDir + '/login/**/*_spec.js',
content: [baseDir + '/content/*_spec.js']
},
//Options to be passed to Jasmine-node
jasmineNodeOpts: {
onComplete: null,
isVerbose: true,
showColors: true,
includeStackTrace: false,
defaultTimeoutInterval: 11000
}
};
您可能需要确保在非 angular 和 angular 页面之间切换时量角器实际上正在等待您的输入加载。那么您是否尝试在单击提交按钮后使用 browser.sleep()
或 browser.wait()
?测试非 angular 页面时应设置 browser.ignoreSynchronization = true;
。
更新:
browser.ignoreSynchronization = true;
this.clickLogoutButton = function(){
browser.wait(function(){
return loginButton.isPresent();
}, 10000).then(function(){
loginButton.click();
});
}
这样您的测试将在测试超时前最多等待 10 秒。您可以根据按钮出现可点击之前最多需要多长时间来更新它。这就是我处理非 angular 网页测试的方式。我希望这对你有用