我正在尝试在facebook中自动化角度应用程序。我能够成功登录到facebook,但每当我尝试导航到iframe中的角度页面时,它会一直带着这个错误消息踢出来" 等待Protractor与页面同步时出错: " window.angular未定义。这可能是因为这是一个非角度页面,或者因为你的测试涉及客户端导航,这会干扰Protractor的自举。"
规范
它('测试',功能(){
browser.driver.ignoreSynchronization = true;
browser.driver.get(URL); //navigating to my facebook page
browser.driver.sleep(500);
//Login to facebook
browser.driver.findElement(by.id('email')).sendKeys(email);
browser.driver.findElement(by.id('pass')).sendKeys(password);
browser.driver.findElement(by.id('login')).click();
browser.driver.sleep(500);
//navigating to angular page withtin iframe
browser.driver.switchTo().frame(0);
browser.waitForAngular();
element(by.model('name')).click();
});
配置
exports.config = { seleniumAddress:' http://127.0.0.1:4444/wd/hub', 能力:{ ' browserName':' chrome',
},
specs: ['test'],
framework: 'jasmine2',
jasmineNodeOpts: {
onComplete: null,
isVerbose: false,
showColors: true,
includeStackTrace: true,
defaultTimeoutInterval: 5000
}
};
量角器版本 - 3.3.0 npm - 2.14.12 节点 - 4.2.4 茉莉花 - 2
日志
10:33:46.248 INFO - 正在执行:[切换到框架:0]) 10:33:46.292 INFO - 完成:[切换到框架:0] 10:33:46.300 INFO - 执行:[执行异步脚本:try {return(function(rootSelector,callback){ var el = document.querySelector(rootSelector);
尝试{ if(window.getAngularTestability){ window.getAngularTestability(EL).whenStable(回调); 返回; } if(!window.angular){ 抛出新错误(' window.angular未定义。这可能是' + '因为这是一个非角度的页面,或者因为你的测试涉及' + '客户端导航,可能会干扰量角器' + '自举。有关详细信息,请参阅http://git.io/v4gXM'); } if(angular.getTestability){ angular.getTestability(EL).whenStable(回调); } else { if(!angular.element(el).injector()){ 抛出新错误('根元素(' + rootSelector +')没有注入器。' + '这可能意味着它不在ng-app中。'); } 。angular.element致发光(EL).injector()得到(' $浏览器')。 notifyWhenNoOutstandingRequests(回调); } } catch(err){ 回调(err.message); } 申请(this,arguments); }
HTML
我们的html代码中包含ng-app和iframe
<iframe id=" " class=" " frameborder="" src=" " style="" name="">
<!DOCTYPE html>
<html class=" " lang="" ng-app="appname" xmlns=" ">
<head>
<body class=" ">
</html>
</iframe>
任何帮助将非常感谢人
答案 0 :(得分:0)
你的角色应用是否在iframe?。
切换到defaultContent,然后尝试切换到Iframe。
browser.switchTo()。defaultContent(); 然后
。<强> browser.driver.switchTo()帧(0); 强>
量角器无法从错误中识别您的角度应用程序。