Symfony2function测试 – 使用jQuery交互单击元素

我正在为使用Symfony2(2.1)完成的应用程序做一些function测试,我遇到了问题。

当用户单击链接或其他元素时,我会加载网站的某些部分,但这些操作是使用jQuery和$ .post调用执行的。 如何让Symfony2抓取工具进行这些调用?

当我做这样的事情时:

$link = $crawler->filter('ul.line_menu a')->eq(1)->link(); $crawler = $client->click($link); 

抓取工具获取“a”元素的“href”并启动它,但“href”为空,并且“click()”函数与此元素相关联,从而阻止使用“preventDefault()”进行单击操作。

谢谢大家!! 🙂

Symfonyfunction测试通过直接调用Symfony内核来运行代码。 它们不是通过Web浏览器运行的,因此不支持javascript(根本不执行)。

如果没有javascript就无法运行您的应用程序,那么您必须使用其他工具进行function测试。 其中一个选项是使用Mink和支持javascript的驱动程序之一(如Selenium2 )。

我可以使用“无头”浏览器作为PhantomJS执行此任务。

PhantomJS是一个带有JavaScript API的无头WebKit脚本。 它具有对各种Web标准的快速和本机支持:DOM处理,CSS选择器,JSON,Canvas和SVG。

为了方便您的工作,您可以使用CasperJS

CasperJS是PhatomJS的配套产品,它带来了大大改进的API,可以轻松创建抓取和自动化工作流程。

在您的情况下,您尝试抓取的Web上下文包括通过JQuery和AJAX的动态内容,如果您想使用Javascript来实现这一点,CasperJS是一个很好的选择。 您可以使用它来触发事件,添加流程步骤,包括在每个ajax调用之后等待和validation的函数,然后再处理任何下一步。

这里是一个如何使用CasperJS和JQuery抓取网站的示例: CasperJs和Jquery与链式选择

这里举例说明如何使用CasperJS和Javascript抓取网站: CasperJS动态选择列表

Symfony不支持javascript,Ajax,Jquery。 它被phpunit用于测试phpfunction。 它不是为此而做的。

你可以使用casperjs 。 使用CasperJS,您可以像在Symfony上使用爬虫一样进行function测试,并获得所有javascript和css代码。

Interesting Posts