Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何知道angular.js是否已完成当前管线的模板渲染_Angularjs_Behat - Fatal编程技术网

Angularjs 如何知道angular.js是否已完成当前管线的模板渲染

Angularjs 如何知道angular.js是否已完成当前管线的模板渲染,angularjs,behat,Angularjs,Behat,我想使用Behat测试angular.js应用程序。但我遇到的问题是,当您转到路由并想要单击链接时,Behat不知道模板何时呈现,因此有时它会在内容不可用时单击。有使用Behat测试angular.js应用程序的经验的人吗 或者,如果当前路由的模板已完成渲染,是否有人知道如何签入javascript?如何检查angular.js是否在页面加载时引导应用程序 我知道angular.js有ngScenario,但我想使用Behat,因为: 人类可读的小黄瓜语言 我们的后端是用Symfony编写的,

我想使用Behat测试angular.js应用程序。但我遇到的问题是,当您转到路由并想要单击链接时,Behat不知道模板何时呈现,因此有时它会在内容不可用时单击。有使用Behat测试angular.js应用程序的经验的人吗

或者,如果当前路由的模板已完成渲染,是否有人知道如何签入javascript?如何检查angular.js是否在页面加载时引导应用程序

我知道angular.js有ngScenario,但我想使用Behat,因为:

  • 人类可读的小黄瓜语言
  • 我们的后端是用Symfony编写的,因此我们可以使用相同的框架来测试两者
亲切问候,


Daan

minkapi有一个方法
wait
,它允许您暂停PHP上下文的执行,直到javascript应用程序完成对“某物”的处理。文档中有一个简单的示例:

在提供的示例中,PHP上下文将暂停5秒钟,直到填充建议结果列表。您需要确定等价的javascript表达式,该表达式将确定路由何时完成渲染

我们在过去使用jQuery表达式时遇到了一些问题,并且已经恢复到本机浏览器方法,例如
getElementById

您还需要使用能够执行javascript的mink驱动程序。我们使用在命令行上运行的
ZombieDriver
。有几种选择可能更适合你


刚刚遇到了一个类似的问题,有人建议等待不是一个真正好的解决方案,因为它总是固定的,你永远不知道页面何时呈现。现在的解决方案似乎好多了,需要看看如何将其纳入所有行为规则中
$session->wait(5000,
    "$('.suggestions-results').children().length > 0"
);