我在做与Symfony2的(2.1)做了一个应用程序的一些功能测试和我被困在一个问题。
我有当用户点击一个链接或其他元素加载网站的某些部分,但使用jQuery和$。员额调用执行这些操作。 我怎样才能获得Symfony2的履带做这些电话?
当我做这样的事情:
$link = $crawler->filter('ul.line_menu a')->eq(1)->link();
$crawler = $client->click($link);
履带式得到了“一个”元素的“href”并启动它,但“HREF”是空的,而“点击()”函数与此元素相关联,防止点击行动“的preventDefault()”。
谢谢大家!! :)
Symfony的功能测试通过直接调用的Symfony内核锻炼你的代码。 他们不是通过Web浏览器上运行,因此不支持javascript(这是根本无法执行)。
如果这是不可能的JavaScript不运行应用程序,比你要使用的功能测试的另一种工具。 其中一个办法就是用水貂与JavaScript支持(如驱动力之一Selenium2 )。
我可以用一个“无头”浏览器来完成这个任务PhantomJS 。
PhantomJS是一个无头WebKit的编写脚本通过一段JavaScript API。 它有各种Web标准和快速的本地支持:DOM处理,CSS选择器,JSON,Canvas和SVG。
为了方便您的工作,你可以使用CasperJS
CasperJS是PhatomJS伴侣带来一个很大的提高API来缓解刮和自动化工作流程的创建。
在你的情况下,如果你尝试抓取网页上下文包括通过jQuery和AJAX动态内容,如果你想使用JavaScript才能实现这一CasperJS是一个很好的选择。 你可以用它来触发事件,添加工艺步骤,包括功能等各Ajax调用后验证之前处理任何下一步。
下面的例子如何抓取与CasperJS和JQuery网站: CasperJs和jQuery带链接的选择
下面的例子如何抓取与CasperJS和公正的Javascript网站: CasperJS动态selectlists
Symfony的不支持javascript,阿贾克斯,jQuery的。 它使用PHPUnit的测试PHP functionnalities。 不是因为本作。
您可以使用casperjs 。 随着CasperJS你可以做你的功能测试就像在Symfony的抓取工具,你会得到所有的JavaScript和CSS代码。