如何保持量角器运行
How to keep protractor running?
我正在尝试使用 NodeJs 的 sql 服务器驱动程序在量角器测试中访问 Db(量角器是一个 nodejs 应用程序,所以这没问题)
这个想法是在我们的 e2e 测试中检查 Db 数据:
- 我们可以检查一些隐藏的东西是否在 Db 中正确写入,这些东西在 UI 上看不到(例如 x 日志,..)
- 我们可以在 e2e 测试中隔离特征:我们不依赖另一个特征来显示数据来检查写入数据的特征是否正常工作。
我遇到的问题是,每当量角器完成与浏览器的交互时,它就会终止。因此,我访问 Db 的代码无法验证检索到的数据(例如 x expect(dataFromDb).toEqual('foo'))
因为对 Db 的请求在 NodeJs 中是异步的。
当我通过回调检索数据时,量角器已被终止。
在我看来,量角器只知道 Web 浏览器承诺,并在没有未完成的浏览器承诺时终止。
是否有任何解决方案可以使量角器保持活力,以便我可以验证我的 Db 数据?谢谢。
要记住两件事。
1)expect(dataFromDb).toEqual('foo'))
:量角器包裹expect
以了解承诺。但是,它只理解webdriver.promise
(即没有$q或任何其他承诺)。如果你想对非 Web 驱动程序的承诺做出断言,你必须自己解决承诺,如下所示:
dataFromDb.then(function(resolvedData) {
expect(resolvedData).toEqual('foo')
})
2)量角器不会"终止"。量角器仅帮助您使用另一个测试框架(即茉莉花、摩卡花)开始测试;一旦完成,它只是一个工具库(即定位器,waitForAngular等),您可以在该测试框架上运行。这是您必须防止终止的其他框架。我不知道你用的是什么框架,但我会以茉莉花为例:
it('call db', function(done) { //notice the inclusion of `done`
browser.get('something'); //this is protractor
element(by.xyz).click(); //this is protractor
var data = queryDatabase(); // you must tell jasmine to wait for this.
data.then(function(resolvedData) {
expect(resolvedData).toBe('foo');
done(); // tell jasmine you're done.
})
})
旁注,量角器修补了茉莉花it
以等待 webdriver 命令完成(就像它修补 expect
一样),以方便用户。但是,如果您不使用 webdriver 的承诺,则需要通过done
回调告诉it
测试何时完成
- 是否可以从javascript文件中将量角器作为模块运行
- 如何在运行时突出显示量角器中的元素
- 如何阻止量角器在失败时运行进一步的测试用例
- AngularJS/Protactor:使用角种子基本应用程序运行量角器时出错
- 我可以't使用量角器perf运行测试示例
- 量角器-通过量角器上传文件/运行exe
- 浏览器在量角器中测试运行之前自动关闭
- 如何保持量角器运行
- 等待几秒钟,然后再运行下一步量角器
- 对象 #<对象> 在尝试运行量角器测试时没有方法“getInstance”
- 只能通过詹金斯部分运行量角器测试
- 不能用量角器运行黄瓜测试
- 如何在量角器中运行相同的测试文件两次
- 描述未定义,我的配置文件无法在量角器上运行
- gullow量角器e2e任务无法运行
- 如何编写运行量角器/Selenium 浏览器自动化脚本的 AWS Lambda 脚本
- 量角器:无法运行测试
- 运行量角器配置结果'此网页不可用'
- 在firefox中运行量角器
- / build /cli.js'运行量角器时