Angularjs 如何知道angular.js是否已完成当前管线的模板渲染
我想使用Behat测试angular.js应用程序。但我遇到的问题是,当您转到路由并想要单击链接时,Behat不知道模板何时呈现,因此有时它会在内容不可用时单击。有使用Behat测试angular.js应用程序的经验的人吗 或者,如果当前路由的模板已完成渲染,是否有人知道如何签入javascript?如何检查angular.js是否在页面加载时引导应用程序 我知道angular.js有ngScenario,但我想使用Behat,因为:Angularjs 如何知道angular.js是否已完成当前管线的模板渲染,angularjs,behat,Angularjs,Behat,我想使用Behat测试angular.js应用程序。但我遇到的问题是,当您转到路由并想要单击链接时,Behat不知道模板何时呈现,因此有时它会在内容不可用时单击。有使用Behat测试angular.js应用程序的经验的人吗 或者,如果当前路由的模板已完成渲染,是否有人知道如何签入javascript?如何检查angular.js是否在页面加载时引导应用程序 我知道angular.js有ngScenario,但我想使用Behat,因为: 人类可读的小黄瓜语言 我们的后端是用Symfony编写的,
- 人类可读的小黄瓜语言
- 我们的后端是用Symfony编写的,因此我们可以使用相同的框架来测试两者
Daanminkapi有一个方法
wait
,它允许您暂停PHP上下文的执行,直到javascript应用程序完成对“某物”的处理。文档中有一个简单的示例:
在提供的示例中,PHP上下文将暂停5秒钟,直到填充建议结果列表。您需要确定等价的javascript表达式,该表达式将确定路由何时完成渲染
我们在过去使用jQuery表达式时遇到了一些问题,并且已经恢复到本机浏览器方法,例如getElementById
您还需要使用能够执行javascript的mink驱动程序。我们使用在命令行上运行的ZombieDriver
。有几种选择可能更适合你
刚刚遇到了一个类似的问题,有人建议等待不是一个真正好的解决方案,因为它总是固定的,你永远不知道页面何时呈现。现在的解决方案似乎好多了,需要看看如何将其纳入所有行为规则中
$session->wait(5000,
"$('.suggestions-results').children().length > 0"
);