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


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

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

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

Одно из решений заключается в следующем:

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

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

Author: Aerendir, 2015-06-16

1 answers

Вы можете использовать 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.

 2
Author: redbirdo, 2015-06-16 17:05:12