РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1139 of 1361 menu

Метод click класса HttpBrowser

Метод click класса HttpBrowser эмулирует клик пользователя по ссылке на текущей странице. Первым параметром передаётся текст ссылки, CSS-селектор или объект Link. После вызова браузер выполняет переход по найденной ссылке и метод возвращает объект Crawler с содержимым новой страницы.

Класс HttpBrowser используется в функциональных тестах Symfony вместо реального браузера: он не выполняет JavaScript, но полностью эмулирует HTTP-переходы, редиректы, куки и формы.

Синтаксис

$crawler = $browser->click($link);

Пример

Давайте создадим контроллер с двумя маршрутами, один из которых содержит ссылку на другой:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { return new Response('<a href="/user">user</a>'); } #[Route('/user', name: 'article_user')] public function user(): Response { return new Response('hello'); } } ?>

Теперь напишем тест, который переходит на главную страницу и кликает по ссылке с текстом 'user':

<?php namespace AppTestsController; use SymfonyBundleFrameworkBundleTestWebTestCase; class ArticleControllerTest extends WebTestCase { public function testClick(): void { $client = static::createClient(); $client->request('GET', '/'); $crawler = $client->clickLink('user'); $this->assertSame('hello', $client->getResponse()->getContent()); } } ?>

Результат выполнения теста:

"hello"

Пример

Метод click принимает не только текст ссылки, но и объект Link, полученный из Crawler. Это удобно, когда нужно кликнуть по конкретной ссылке из множества похожих:

<?php namespace AppTestsController; use SymfonyBundleFrameworkBundleTestWebTestCase; class ArticleControllerTest extends WebTestCase { public function testClickLink(): void { $client = static::createClient(); $crawler = $client->request('GET', '/'); $link = $crawler->selectLink('user')->link(); $crawler = $client->click($link); $this->assertSelectorTextContains('body', 'hello'); } } ?>

Результат выполнения теста:

"hello"

Смотрите также

  • класс HttpBrowser,
    который эмулирует браузер в тестах
  • метод request,
    который выполняет HTTP-запрос
  • метод submit,
    который отправляет форму
  • метод followRedirect,
    который выполняет переход по редиректу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить