Symfony Crawler: как проверить существование ссылки на определенную страницу

Я пишу несколько функциональных тестов и хочу убедиться, что ссылка «Изменить» существует на странице, если пользователь вошел в систему.

Ссылка простая <a href="/profile/22/edit">Edit</a>.

Как я могу отфильтровать его с помощью компонента Crawler Symfony?

Одно решение таково:

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

Но вместо этого я хотел бы использовать выбор тегов, так как я могу это сделать?


person Aerendir    schedule 16.06.2015    source источник


Ответы (1)


Вы можете использовать Crawler::filterXPath() для проверки наличия или даже отсутствия html-элементов, соответствующих всевозможным критериям. Чтобы проверить наличие ссылки, я предпочитаю использовать идентификатор элемента, так как он, скорее всего, останется постоянным. Например, если вы измените свою ссылку следующим образом:

<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");

Вот приведены несколько хороших примеров фильтров, которые можно использовать с XPath.

person redbirdo    schedule 16.06.2015