Symfony Crawler:如何检查指向特定页面的链接

时间:2015-06-16 16:24:50

标签: php symfony phpunit functional-testing

我正在编写一些功能测试,如果用户已登录,我想验证页面上是否存在编辑链接。

链接很简单<a href="/profile/22/edit">Edit</a>

如何使用Symfony的Crawler组件过滤它?

一个解决方案就是:

$this->assertEquals(1, $crawler->filter('html:contains("<a href="/profile/22/edit">")')->count());

但是我想使用标签选择,那么我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

您可以使用Crawler :: filterXPath()来检查是否存在符合各种条件的html元素。为了检查是否存在链接,我更喜欢使用元素id,因为它最有可能保持不变。例如,如果您按如下方式修改链接:

<a id="edit-profile-link" href="/profile/22/edit">Edit</a>

然后您可以检查链接是否存在:

$node = $crawler->filterXPath('//a[@id="edit-profile-link"]');
$this->assertTrue($node->count() == 1), "Edit profile link exists");

Here是可以与XPath一起使用的过滤器的一些很好的例子。