Symfony Crawler:如何检查特定页面的 link 是否存在
Symfony Crawler: how to check that a link to a particular page exists
我正在编写一些功能测试,如果用户已登录,我想验证页面上是否存在编辑 link。
link是一个简单的<a href="/profile/22/edit">Edit</a>
。
如何使用 Symfony 的 Crawler 组件过滤它?
一个解决方案是:
$this->assertEquals(1, $crawler->filter('html:contains("<a href="/profile/22/edit">")')->count());
但是我想改用标签选择,那我该怎么做呢?
您可以使用 Crawler::filterXPath() 来检查是否存在或什至不存在符合各种条件的 html 元素。要检查 link 是否存在,我更喜欢使用元素 id,因为它最有可能保持不变。例如,如果您将 link 修改如下:
<a id="edit-profile-link" href="/profile/22/edit">Edit</a>
然后你可以像这样检查link是否存在:
$node = $crawler->filterXPath('//a[@id="edit-profile-link"]');
$this->assertTrue($node->count() == 1), "Edit profile link exists");
Here 是一些可以与 XPath 一起使用的过滤器的好例子。
我正在编写一些功能测试,如果用户已登录,我想验证页面上是否存在编辑 link。
link是一个简单的<a href="/profile/22/edit">Edit</a>
。
如何使用 Symfony 的 Crawler 组件过滤它?
一个解决方案是:
$this->assertEquals(1, $crawler->filter('html:contains("<a href="/profile/22/edit">")')->count());
但是我想改用标签选择,那我该怎么做呢?
您可以使用 Crawler::filterXPath() 来检查是否存在或什至不存在符合各种条件的 html 元素。要检查 link 是否存在,我更喜欢使用元素 id,因为它最有可能保持不变。例如,如果您将 link 修改如下:
<a id="edit-profile-link" href="/profile/22/edit">Edit</a>
然后你可以像这样检查link是否存在:
$node = $crawler->filterXPath('//a[@id="edit-profile-link"]');
$this->assertTrue($node->count() == 1), "Edit profile link exists");
Here 是一些可以与 XPath 一起使用的过滤器的好例子。