为什么可以't Protractor在自动初始化的Angular网站上查找Angular
Why can't Protractor find Angular on an automatically initialized Angular site?
如果不收到以下错误,我就无法使用browser.get()
:
Error: Angular could not be found on the page http://localhost:5000/#/login
debug=timing&saveLogs=true&displayAll=true : angular never provided resumeBootstrap
我可以使用browser.driver.get()
,但在特定的等待和不稳定的测试中,我会遇到需要编写的问题。
我一直在读这篇文章,没有发现任何有帮助的建议。以下是一些添加的详细信息:
- 登录页面是Angular应用程序的一部分
ng-app
在<html>
中调用(Protractor默认为<body>
,我曾尝试将rootElement
设置为html
,但没有任何区别)- 应用程序中使用了
$timeout
,但用$interval
切换每个$timeout
没有任何作用 directConnect: true
带有chromeDriver,但我认为这不会引起问题- 使用
Angular 1.2.28
和Protractor 2.0
这是完整的错误信息:
Using ChromeDriver directly...
[launcher] Running 1 instances of WebDriver
Error: Angular could not be found on the page http://localhost:5000/#/login?debug=timing&saveLogs=true&displayAll=true : angular never provided resumeBootstrap
at /Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/lib/protractor.js:479:17
at [object Object].promise.ControlFlow.runInFrame_ (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1877:20)
at [object Object].promise.Callback_.goog.defineClass.notify (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:2464:25)
at [object Object].promise.Promise.notify_ (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:563:12)
at Array.forEach (native)
at Object.goog.array.forEach (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/array/array.js:203:43)
at [object Object].promise.Promise.notifyAll_ (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:552:16)
at goog.async.run.processWorkQueue (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/async/run.js:125:21)
at runMicrotasksCallback (node.js:337:7)
at process._tickCallback (node.js:355:11)
From: Task: WebDriver.manage().timeouts().setScriptTimeout(11000)
at [object Object].webdriver.WebDriver.schedule (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:360:15)
at [object Object].webdriver.WebDriver.Timeouts.setScriptTimeout (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1367:23)
at [object Object].Runner.createBrowser (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/lib/runner.js:181:30)
at /Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/lib/runner.js:257:21
at _fulfilled (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/q/q.js:797:54)
at self.promiseDispatch.done (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/q/q.js:826:30)
at Promise.promise.promiseDispatch (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/q/q.js:759:13)
at /Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/q/q.js:573:44
at flush (/Users/brandenbyers/Projects/admin-ui/node_modules/grunt-protractor-runner/node_modules/protractor/node_modules/q/q.js:108:17)
at process._tickCallback (node.js:355:11)
at Function.Module.runMain (module.js:503:11)
at startup (node.js:129:16)
at node.js:814:3
问题是Protractor期望默认的window.name
:
window.name = "NG_DEFER_BOOTSTRAP!"
但是我正在测试的应用程序没有使用这个默认值。因此,每次都会出现"量角器testForAngular
"故障。量角器代码链接:https://github.com/angular/protractor/blob/8a3412e98614bb69978869b34b5b7243619f015d/lib/clientsidescripts.js#L550-L583
在app.js中注释掉自定义window.name =
解决了这个问题,但现在我们需要弄清楚如何让Protractor使用不同的变量,或者只为测试动态注释掉这一行。
相关文章:
- 为什么可以't Protractor在自动初始化的Angular网站上查找Angular
- Angular.js延迟控制器初始化
- Angular JS控制器初始化错误
- 初始化ng模型时,Angular ui选择占位符不起作用
- 如何在加载完所有脚本后初始化angular
- 我们可以在初始化variable Angular JS时将变量值声明为未定义吗
- Angular js 不初始化
- Angular 2应用程序基础初始化
- 在 Angular 服务中初始化数据的位置
- 如何使用需要异步初始化的提供程序配置 angular
- 重写 Angular 初始化
- 组件初始化无限循环-Angular 2 JSPM
- 初始化Angular应用程序后立即注册事件侦听器
- 使用Angular指令初始化多个jQuery插件
- 在初始加载时初始化Angular$scope
- 初始化窗口上的angular.onload事件
- Angular.js:如何在应用初始化后加载模块
- 在Angular中,如何重新初始化视图'控制器中的$scope变量?
- Angular JS延迟控制器和指令的初始化,直到数据从服务器返回
- Angular初始化时用户认证的最佳实践/模式