在角项目Error: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
中运行我的测试后出现了一个奇怪的错误。我的量角器配置如下所示:
require('coffee-script').register();
exports.config = {
seleniumServerJar: './node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar',
seleniumAddress: 'http://localhost:4444/wd/hub',
capabilities: {
browserName: 'chrome'
//'chromeOptions': {
// 'args': ['--disable-extensions']
//}
},
specs: [
'*_spec.coffee'
],
allScriptsTimeout: 10000000000,
baseUrl: 'http://localhost:9003/',
jasmineNodeOpts: {
isVerbose: false,
showColors: true,
includeStackTrace: true,
defaultTimeoutInterval: 10000000000
}
};
并测试:
loginPage = require './pages/log_in_page'
describe 'Log In', ->
it 'shows after login', ->
loginPage()
.setEmail('test@dispatch.me')
.setPass('a46s75d4as765d4a6s7d54as76d5as74das76d5')
从页面获取信息:
module.exports = ->
@email = element By.css '.test-i-login'
@password = element By.css '.test-i-password'
@setEmail = (name) =>
@email.sendKeys(name)
this
@setPass = (number) =>
@password.sendKeys(number)
this
this
在github上有一些类似的问题,但在那里我找不到适合我的解决方案。请回答。
答案 0 :(得分:14)
将Protractor配置中的framework
选项更改为'jasmine2'
可以解决此问题。
有关详细信息,请参阅this thread。
答案 1 :(得分:6)
在我的场景中,登录页面是非角色的,尝试以下方式,为我解决
browser.driver.findElement(By.id('username')).sendKeys('binnu');
答案 2 :(得分:5)
Protractor用于测试Angular应用程序,这意味着在HTML正文中具有ng-app
标记的网页和与Javascript文件中的Angular代码对应的控制器。
Protractor非常有用的原因是Angular应用程序以异步方式运行 ,这意味着当网页加载时它们并不总是完成加载。在页面完全准备好之前,大多数测试框架会尝试单击事物,键入内容等。量角器检测到在后台运行的所有Angular进程,这样你就不会在一切准备就绪之前不小心做某事。
Protractor告诉你的是,它没有找到在页面上运行的任何Angular进程。您的页面可能正常工作,但它不会以Protractor可识别的方式依赖Angular。
这并不意味着量角器无法测试页面。您可以使用browser.driver.any_webdriver_command_here()
访问常规WebDriver命令。您只是错过了Protractor提供的出色的同步功能。
答案 3 :(得分:2)
之所以发生这种情况,是因为我的chromedriver路径安装错误了。这就是为什么我得到这个消息“在窗户上找不到角度”。我遇到的另一个问题是,我需要手动运行webdriver作为后台进程。这解决了通过制定正确的gulp任务(我做错了),看起来像这样:
gulp.task ['test'], ->
runSequence start_server, run_protractor, end_server.
假设它会帮助那些有类似(愚蠢)问题的人。