Symfony Crawler: как да проверите дали съществува връзка към определена страница

Пиша някои функционални тестове и искам да проверя дали връзката Редактиране съществува на страницата, ако потребителят е влязъл.

Връзката е проста <a href="/bg/profile/22/edit">Edit</a>.

Как мога да го филтрирам с помощта на компонента Crawler на Symfony?

Едно решение е следното:

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

Но бих искал да използвам вместо това избора на етикети, така че как мога да направя това?


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


Отговори (1)


Можете да използвате Crawler::filterXPath(), за да проверите наличието или дори липсата на html елементи, отговарящи на всякакви критерии. За да проверя за наличие на връзка, предпочитам да използвам идентификатора на елемента, тъй като е най-вероятно да остане постоянен. Например, ако промените връзката си, както следва:

<a id="edit-profile-link" href="/bg/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