失败:等待量角器与页面同步时出错: " angularJS可测试性和角度可测试性都是不确定的。 这可能是因为这是一个非角度页面或因为 您的测试涉及客户端导航,这可能会干扰 量角器的自举。有关详细信息,请参阅http://git.io/v4gXM
我在下面的代码中使用页面对象模型。但如果我使用普通代码,它可以正常工作。你能告诉我在哪里纠正这个代码。由于这是一个机密项目,我无法呈现我当前的网址 配置文件:
exports.config={
directConnect: true,
framework: 'jasmine',
capabilities:
{
'browserName' : 'chrome'
},
specs: ['specs.js'],
jasmineNodeOpts: {
showColors: true,
}
页面对象模型
var CAPTNLoginpage = function(){
var NameInput = element(by.id('userNameInput'));
var PasswordInput = element(by.id('passwordInput'));
var Submit = element(by.id('submitButton'));
this.get=function(){
browser.get('https://xxxxxxxx/', 25000);
browser.ignoreSyncronization=true;
browser.driver.sleep(10000);
var title = browser.getTitle();
console.log(title);
};
this.setName = function(name){
NameInput.sendKeys(name);
};
this.setPassword = function(password){
PasswordInput.sendKeys(password);
};
this.loginsubmit=function(){
Submit.click();
};
};
module.exports = new CAPTNLoginpage();
specs
var CAPTNLogin = require('./CAPTNLoginpage');
describe('CAPTN Login Page', function(){
it('Should login into CAPTN',function(){
CAPTNLogin.get();
CAPTNLogin.setName('xxxxxxxxxxx');
CAPTNLogin.setPassword('5196qL25196qL2');
CAPTNLogin.loginsubmit();
});
});
如果我使用正常程序,那么它工作正常 没有Page对象模型的规范
describe('Protractor Demo App', () => {
it('should have title', () => {
browser.get('xxxxxxxxxxxxxx/');
browser.ignoreSynchronization = true;
browser.driver.sleep(30000);
var a = browser.getTitle();
console.log(a);
element(by.id('userNameInput')).sendKeys('xxxxxxxxxxxxxxx');
element(by.id('passwordInput')).sendKeys('xxxxxxxxxxxxxx');
element(by.id('submitButton')).click();
});
});
答案 0 :(得分:0)
如果您运行旧版Chrome驱动程序,则可能会出现此特定问题。修复很简单,将您的chrome驱动程序升级到最新版本(编写本文时为2.35)。以下是更新chrome驱动程序的命令示例:
node ./node_modules/protractor/bin/webdriver-manager update --versions.chrome 2.35 --standalone false --gecko false
(如果您的项目是本地安装的量角器)。
如果您不确定机器上安装量角器的位置(本地或全局),并且上述功能无效,请直接尝试:
webdriver-manager update --versions.chrome 2.35 --standalone false --gecko false
如果不起作用,请先安装webdriver管理器(npm install -g webdriver-manager
)。
如果您的问题仅仅是您的驱动程序已过期,那么这应该可以解决问题。
答案 1 :(得分:0)
我遇到了同样的问题。问题出在这一行:
var title = browser.getTitle();
它正在尝试与页面对象同步,但我们告诉它立即存储导致此问题的标题。在我看来,错误本身有点误导。我也有相同的代码行。我删除它,它工作正常。
请从此处删除此行,然后重试。
如果您确实需要标题,请在页面对象中为此编写另一个功能。类似的东西:
this.getBrowserTitle = function() {
var title = browser.getTitle();
return title;
};
希望这会有所帮助。如果这可以解决您的问题,请告诉我。 POM是要走的路。