量角器找不到棱角
Protractor fails to find Angular
我似乎无法让量角器意识到 Angular 已加载并正在运行。当它打开Chrome时,我的应用程序在浏览器中完全加载,所以我知道Angular已加载并正常运行。
配置文件:
exports.config = {
seleniumServerJar: 'C:/Dev/PrismWeb/selenium/selenium-server-standalone-2.35.0.jar',
seleniumPort: null,
chromeDriver: 'C:/Dev/PrismWeb/selenium/chromedriver.exe',
seleniumArgs: [],
seleniumAddress: null,
allScriptsTimeout: 110000,
specs: ['c:/dev/prismweb/test/e2e/*.js'],
capabilities: {'browserName': 'chrome'},
baseUrl: 'http://localhost:8080',
rootElement: 'html',
jasmineNodeOpts: {
onComplete: null,
isVerbose: true,
showColors: true,
includeStackTrace: true,
defaultTimeoutInterval: 30000
}
};
我只有一个测试正在尝试运行,但它失败了,因为量角器找不到 Angular。
测试:
describe('homepage loads: ', function(){
var ptor;
ptor = protractor.getInstance();
beforeEach(function(){
ptor.get('/');
});
it('should load the prism homepage: ', function(){
var usernameField = ptor.findElement(protractor.By.id("username"));
//expect(usernameField).toBeDefined();
});
});
这是我得到的错误:
未知错误:javascript 错误:角度未定义(会话 信息: 铬=30.0.1599.69) (驱动程序信息: chromedriver = 2.2,platform=Windows NT 6.1 SP1 x86_64) (警告: 服务器未提供任何堆栈跟踪信息)命令持续时间或 超时:19 毫秒 构建信息: 版本:"2.35.0",修订版: 'c916b9d', 时间: '2013-08-12 15:42:01' 系统信息: os.name: '视窗 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_21' 会话 ID: 1ef7dcd7c5fc9c4e9e1dede050002adf 驱动程序信息: org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={chromedriverVersion=2.2}, rotatable=false, 位置上下文启用=true,版本=30.0.1599.69, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=false, webStorageEnabled=true, nativeEvents=true, applicationCacheEnabled=false, 采取截图=真}]
我尝试将 ng-app 属性移动到正文标签(并相应地更改配置),但我遇到了同样的错误。我们在 html 标签上还有一个 ng-controller 属性,我尝试将其移动到正文并将 ng-app 属性单独保留在 html 标签上,但结果是一样的。有没有人知道为什么会失败?
编辑:只是一些可能会有所帮助的笔记。我已经更新了上面的测试,以包括手动引导工作。Angular 和所有模块的脚本标签都位于页面底部,就在结束 BODY 标签之前。HTML 标记仍然具有 ng-app="myApp" 属性和 ng-controller="baseController" 属性。如果我尝试在测试中手动引导应用程序,我会得到以下结果:
ReferenceError: angular is not defined
另一件让我担心的事情是,我们使用的一个模块绝对需要"$"才能映射到jQuery,所以我们像这样映射它:
<script type="text/javascript">
var $jq=jQuery.noConflict();
var $=jQuery.noConflict();
</script>
包含 ng 应用程序的地方:
<!DOCTYPE html>
<html ng-app="prismApp" ng-controller="baseController">
<head>
我不太确定是否要在 a 中做一个beforeEach()
,it()
但除此之外,你有没有试过等待一段时间?显然,我的意思是ptor.waitForAngular()
或ptor.wait()
?
在ptor.get()
之后尝试ptor.sleep(10000)
,看看这是否是一个时间问题。
编辑:另请查看量角器 API 以及wait()
的工作原理:
ptor.wait(function () {
// Return a condition. Code will continue to run once it is true
}, 10000); // Only do this for 10 seconds
编辑:尝试ptor.driver.get('my-page');
而不是ptor.get('my-page');
编辑:量角器现在将browser
公开为全局,因此您可以只使用browser.get('index.html#/foo')
或browser.wait()
等。
尝试在测试文件中包含以下内容:
browser.ignoreSynchronization = true;
它会关闭测试与角度的同步并使其正常工作。
您是否正在使用ng-app来引导您的Angular应用程序?还是手动引导应用程序?
我在您的配置文件中看到该rootElement
设置为"html"。
默认情况下,量角器假定应用程序的根目录将位于正文标签上。如果 <html>
标记不是应用程序中的角度引导程序的位置,请尝试将配置文件中的根元素更改为角度优先引导的位置(无论是手动还是使用 ng-app 指令)。这确实有助于解决时序问题,并加快量角器的执行速度。
- 气质的“nestRemoting()”有时可以'找不到关系
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 找不到模块捆绑包
- for循环中的javascript if语句找不到==
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- [Vue warn]:找不到元素
- ngRoute找不到模板
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- 因果报应-找不到模块:错误:无法解析模块'scs'
- Grunt:jit Grunt:插件;量角器”;找不到任务
- 我找不到使用量角器选择此链接的方法
- 量角器找不到密码 ID 的 Gmail 输入
- 量角器 3.1.1 + 角度 2:找不到元素的可测试性
- 量角器找不到棱角
- 量角器找不到具有id的元素
- 量角器找不到浏览器中渲染的任何元素
- 捕捉量角器中的"在窗口上找不到角度"
- 量角器找不到窗口上的角度