问题标签 [angularjs-e2e]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2952 浏览

javascript - Angularjs Protractor E2E 测试“应用程序已使用此元素引导”

我遇到了一个问题,我的量角器测试总是失败并显示错误消息:

当前的 Angularjs 文档表明问题出在手动引导应用程序时,而在我的情况下,情况并非如此,我们只是使用:

正常站点工作正常,没有错误或警告,但是一旦我使用 Protractor 设置测试,就会发生错误。需要注意的是,当我使用 angularjs 1.08 时测试通过了,但在使用 1.25 时失败了

测试是这样的:

});

*请注意为安全起见已删除实际登录详细信息。

只要: browser.get('#/campaigns');

被调用,错误发生。

我也尝试在量角器 conf 文件中使用登录功能作为 onPrepare,但同样的事情发生了。

任何想法或帮助将不胜感激!

完整的堆栈跟踪:

http://errors.angularjs.org/1.2.5/ng/btstrpd?p0=%3Chtml%20lang%3D%22en%22%20data-ng-app%3D%22pmApp%22%20class%3D%22js%20draganddrop %20no-video%20no-audio%20ng-scope%22%3E' 由 Request => {"headers":{"Accept":"application/json, image/png","Connection":"Keep-Alive","Content-Length":"159","Content-Type ":"application/json; charset=utf-8","Host":"localhost:29064"},"httpVersion":"1.1","method":"POST","post":"{\"args \":[[]],\"script\":\"return (function () {\n // 继续引导 Angular。\n angular.resumeBootstrap(arguments[0]);\n }).apply(空, 参数);\"}","url":"/execute","urlParsed":{"anchor":"","query":"","file":"execute","directory": "/","路径":"/执行","relative":"/execute","port":"","host":"","password":"","user":"","userInfo":"","authority":"", "protocol":"","source":"/execute","queryKey":{},"chunks":["execute"]},"urlOriginal":"/session/64b440e0-68b9-11e3-b92a- e1efe36914bc/execute"} 构建信息:版本:'2.37.0',修订:'a7c61cb',时间:'2013-10-18 17:14:00' 系统信息:主机:'peters-mbp',ip:' 192.168.0.3',os.name:'Mac OS X',os.arch:'x86_64',os.version:'10.9',java.version:'1.6.0_65'密码":"","user":"","userInfo":"","authority":"","protocol":"","source":"/execute","queryKey":{}, "chunks":["execute"]},"urlOriginal":"/session/64b440e0-68b9-11e3-b92a-e1efe36914bc/execute"} 构建信息:版本:'2.37.0',修订:'a7c61cb',时间:'2013-10-18 17:14:00' 系统信息:主机:'peters-mbp',ip:'192.168.0.3',os.name:'Mac OS X',os.arch:'x86_64', os.version:'10.9',java.version:'1.6.0_65'密码":"","user":"","userInfo":"","authority":"","protocol":"","source":"/execute","queryKey":{}, "chunks":["execute"]},"urlOriginal":"/session/64b440e0-68b9-11e3-b92a-e1efe36914bc/execute"} 构建信息:版本:'2.37.0',修订:'a7c61cb',时间:'2013-10-18 17:14:00' 系统信息:主机:'peters-mbp',ip:'192.168.0.3',os.name:'Mac OS X',os.arch:'x86_64', os.version:'10.9',java.version:'1.6.0_65'"chunks":["execute"]},"urlOriginal":"/session/64b440e0-68b9-11e3-b92a-e1efe36914bc/execute"} 构建信息:版本:'2.37.0',修订:'a7c61cb',时间:'2013-10-18 17:14:00' 系统信息:主机:'peters-mbp',ip:'192.168.0.3',os.name:'Mac OS X',os.arch:'x86_64', os.version:'10.9',java.version:'1.6.0_65'"chunks":["execute"]},"urlOriginal":"/session/64b440e0-68b9-11e3-b92a-e1efe36914bc/execute"} 构建信息:版本:'2.37.0',修订:'a7c61cb',时间:'2013-10-18 17:14:00' 系统信息:主机:'peters-mbp',ip:'192.168.0.3',os.name:'Mac OS X',os.arch:'x86_64', os.version:'10.9',java.version:'1.6.0_65'

0 投票
1 回答
964 浏览

javascript - 为什么 .text() 函数在 AngularJS e2e 的 ngScenario 中返回 [object Object]?

更新:下面的解决方案!

我对网站开发相当陌生,但我的任务是为使用 AngularJS 的开发网站开发 e2e(端到端)测试。因此,我一直在寻找使用 AngularJS 的 karma-run ngScenario testing wrapper的道路。

无论如何,刚开始我想确保一个简单的超链接的文本匹配它的 href 地址的一部分。无需知道此代码段的结构,但这些是用户配置文件的缩略图,您可以完全单击缩略图对象(第一个“a”),也可以单击显示其姓名的链接(第二个“一个')。

一页上有几十个。

这是加载了用户“PurplePenguin”的页面的一部分。

本质上,我想要一个测试,它将获取第二个 'a' 元素的文本并根据 href 属性检查它:“断言 href '/profile/PurplePenguin' 等于 '/profile/' + 'PurplePenguin'”

这就是我所做的,只是想测试第一个缩略图的'a',(在我写“PurplePengiun”的时候,每次都是第一个用户,所以我可以硬编码它)。

这被返回:

所以我想出了如何在页面上找到我需要的特定元素,但是试图操纵一个简单的“a”元素的文本只会给我[object Object]。

我用我对 JS 的基本知识尝试过的一些事情:

尝试除 text() 以外的东西

当试图将它们用作字符串时,它们也会返回 [object Object]。

似乎只有在使用非常特定的 API 函数(如 .toBe 或 .toEqual)时,查看这些元素的值和属性才有效,但我想断言创建了一个特别格式化的字符串。

感谢您的任何帮助!


解决方案


感谢 Andyrooger 的那一点洞察力,在发布我的问题之前,我实际上已经尝试了查询功能,但放弃得太快了。您的解释让我有了开始深入研究官方文档中发布的示例的想法。我最终从Adi Roiban 的帖子中得到了一个提示,另一个 Angular e2e 作家的问题是关于查询、done() 消息和承诺。这最终导致我找到了最终的解决方案。

所以我给自己做了一个解决方案,并本着合作的精神做了一套例子供其他人学习。有四个示例,前两个只是获取文本和 href 并将它们与硬编码值进行比较。第三个使用 indexOf 进行简单的比较。第四个展示了如何创建自己的更具体的通过/失败条件(比 Jasmine 提供的匹配器更多)。

数字 1:用户名文本与硬编码值

数字 2:配置文件 href 值与硬编码值

数字 3:简单的字符串比较

第 4 点:以您自己的方式进行更详细的字符串比较以及更好的错误消息

0 投票
0 回答
452 浏览

javascript - Angularjs e2e 使用 ng-scenario 进行测试——检查输入的焦点状态

我试过: https ://github.com/velesin/jasmine-jquery和 https://github.com/ferronrsmith/angularjs-jasmine-matchers 但看起来它只适用于 jasmine 框架,我正在使用我的应用程序中的 ng-scenario。

起初我认为只使用伪类应该可以工作:

因为我在 angular-scenario.js 中发现了这一行:

但它没有用。

我也尝试过这样的事情:

输入有焦点,但elements.is(':focus')总是返回false

有没有一种简单的方法来检查输入是否在 Angularjs e2e 测试中具有焦点?

0 投票
0 回答
68 浏览

javascript - AngularJS:在 e2e 测试中使用注入来捕获一些事件

我想编写一个 e2e 测试(检查是否提交了表单)作为测试指令的一部分,我已将其作为表单元素的属性放置,我想实现以下目标:

如何捕捉某些事件,例如提交表单或子元素发出的某些事件?

我可以以某种方式使用角度模拟并注入例如 $scope 来检查提交功能的评估吗?我到处玩,尝试了几种方法,但最后我得出结论,这仅适用于单元测试,对吗?或者有一些方法可以在 e2e 中测试是否提交了表单或者是否触发了某个事件?

0 投票
1 回答
556 浏览

angularjs - Angular Karma E2E 测试到外部链接

我正在尝试测试一个链接以转到 Twitter 页面。这可能吗?

索引.html

业力-e2e.conf.js

场景.js

错误

0 投票
1 回答
540 浏览

angularjs - 如何在 Angular JS e2e 测试中使用 resume()?

我正在完成这个 Angular js 教程的第三步。http://docs.angularjs.org/tutorial/step_03

最后一项任务是“pause()在端到端测试中添加一条语句并重新运行它”。

我能够添加pause()并且测试应该暂停。问题是,如何恢复?

pause() 此处的文档指示在控制台中调用resume()或单击 Runner UI 中的恢复链接,但我似乎无法弄清楚如何从控制台调用恢复,也无法在 Runner UI 中找到恢复链接。

你怎么叫resume()

0 投票
3 回答
14041 浏览

angularjs - e2e protractor test requiring oauth authentication

I've got an Angular app that requires authentication with Google, granting of some scopes, etc, and I'm trying to set up automatic e2e tests for it. I have protractor working well for me in general, but when we get to the google auth page, login, and get redirected, protractor fails the test because "document unloaded while waiting for result."

Is there a tool or technique I can use to authenticate to a development google account beforeEach test?

If I could just get the framework to hold on for a second while plain-old webdriver drives the login, and only really activate the angular stuff after I get to my target page, that would be perfect!

0 投票
1 回答
3434 浏览

angularjs - 使用酱汁和量角器测试 Internet Explorer 和 safari

我有以下测试,当我使用 firefox 和 chrome 在本地和酱汁(至少大部分时间)上运行它们时,它们运行良好。

但是当我启动 Internet Explorer 或 safari 时,我会遇到各种错误,而手动测试时页面工作正常。对于 IE,我得到:

消息:UnknownError:JavaScript 错误(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:97 毫秒构建信息:版本:'2.30.0',修订:'dc1ef9c',时间:'2013-02-19 00:15:27' 系统信息:os.name:'Windows Server 2008 R2',os.arch:'x86',os.version:'6.1',java.version:'1.6.0_35' 会话 ID:42b30348- 8598-4edb-923e-a7019ced6eb0 驱动程序信息:org.openqa.selenium.ie.InternetExplorerDriver 功能 [{platform=WINDOWS, elementScrollBehavior=0, javascriptEnabled=true, enablePersistentHover=true, ignoreZoomSetting=false, browserName=internet explorer, enableElementCacheCleanup=true , unexpectedAlertBehaviour=dismiss, version=10, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false,requireWindowFocus=false,allowAsynchronousJavaScript=false,handlesAlerts=true,initialBrowserUrl=,nativeEvents=true,takeScreenshot=true}]

错误:等待量角器与页面同步时出错:{"stack":"TypeError: Unable to get property 'get' of undefined or null reference\n at Anonymous function (Unknown script code:25:5)\n at匿名函数(未知脚本代码:21:14)\n 在匿名函数(未知脚本代码:21:2)","description":"无法获取未定义或空引用的属性 'get'","number": -2146823281}

对于 Safari:

UnknownError:检测到页面卸载事件;脚本执行不适用于页面加载。(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:384 毫秒构建信息:版本:'2.33.0',修订:'4e90c97',时间:'2013-05-22 15:32:38'系统信息:os.name:'Windows Server 2008 R2',os.arch:'x86',os.version:'6.1',java.version:'1.6.0_35' 会话 ID:空驱动程序信息:org.openqa。 selenium.safari.SafariDriver 功能 [{platform=WINDOWS, javascriptEnabled=true, cssSelectorsEnabled=true, secureSsl=true, browserName=safari, takeScreenshot=true, version=5.1.7}]

我对原因感到困惑。我尝试了更简单的测试,结果相同,我尝试了本地和远程 url,我尝试了各种延迟,比如waitForAngular,waitptor ignoreAsynch = true. 它们都不会导致预期的结果。有什么建议么?

我的量角器配置文件:

虽然这似乎无关紧要,但我使用 grunt-protractor runner 来顺序运行多个实例。

0 投票
1 回答
4749 浏览

angularjs - Protractor 0.16.1 e2e AngularJS - 启动 selenium 独立服务器... events.js:72 错误:spawn ENOENT

尝试的项目:https ://github.com/yearofmoo/angularjs-seed-repo

环境:

Windows 7 64 位
NodeJS v 0.10.24
Protractor v 0.16.1
grunt v0.4.2
grunt-cli v0.1.11

笔记:

根据 [Julie's post][1],对于 selenium,install_selenium_standalone 已在 2013 年 12 月 2 日左右替换为 webdriver-manager 二进制文件。这似乎与问题有关。

此外,git 必须安装在项目目录中,并且 npm install 必须在 Windows 中使用 Git Bash 运行。

Git Bash 中的错误:

$ grunt test:e2e --debug
Running "connect:testserver" (connect) task
[D] 任务源:c:\nodejs-0.10.24\node_modules\grunt-contrib-connect\tasks\conn ect.js 开始连接网络服务器在 127.0.0.1:9999。

运行“protractor:singlerun”(量角器)任务
[D]任务源:c:\nodejs-0.10.24\node_modules\grunt-protractor-runner\tasks\pr otractor_runner.js 启动selenium独立服务器...

events.js:72
      投掷者;// 未处理的“错误”事件
               ^
错误:        在 Process.ChildProcess._handle.onexit (child_process.js:771:34)
       的 errnoException (child_process.js:980:11) 处产生 ENOENT

> 致命错误:量角器退出代码:8

0 投票
0 回答
191 浏览

javascript - 添加 :run 时,Karma 不执行 e2e 测试

我正在使用 Grunt、Angular 和 Karma,但遇到以下问题 - 我读到我必须在 karma 任务的名称中添加“:run”,以便在后台运行所有测试并仅使用 Karma 的一个实例. 听起来不错,很容易。它适用于单元测试,但是当我用 e2e 测试尝试同样的事情时它就不起作用了。出于某种原因,我得到:

当我删除“:运行”时,每次触发测试时我都会得到一个新的 Chrome 窗口。

我的 gruntfile 的相关部分如下所示:

我的 Karma 配置如下所示:

我不太确定什么是未找到以及如何解决它,因为我一直在谷歌搜索和弄乱它而没有任何结果,所以我决定在这里问。谢谢!