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

Метод clickLink класса KernelBrowser

Метод clickLink класса KernelBrowser имитирует клик пользователя по ссылке на текущей странице. Первым параметром передаётся текст ссылки, атрибут id или атрибут alt. Метод находит ссылку в DOM-дереве ответа, отправляет GET-запрос по её адресу и возвращает объект Crawler с новым содержимым страницы.

Синтаксис

public function clickLink(string $linkText): Crawler

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { return $this->render('article/index.html.twig'); } #[Route('/article/user', name: 'article_user')] public function user(): Response { return new Response('user page'); } } ?>

Создадим Twig-шаблон со ссылкой на вторую страницу:

<a href="{{ path('article_user') }}">user page</a>

Теперь напишем тест, в котором кликнем по ссылке 'user page' и проверим результат:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testClickLink(): void { $client = static::createClient(); $client->request('GET', '/article'); $crawler = $client->clickLink('user page'); $this->assertSelectorTextContains('body', 'user page'); } } ?>

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

"OK (1 test, 1 assertion)"

Пример

Давайте найдём ссылку по атрибуту id. Изменим Twig-шаблон:

<a id="user-link" href="{{ path('article_user') }}">go</a>

Теперь кликнем по ссылке через её id:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testClickLinkById(): void { $client = static::createClient(); $client->request('GET', '/article'); $crawler = $client->clickLink('user-link'); $this->assertSelectorTextContains('body', 'user page'); } } ?>

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

"OK (1 test, 1 assertion)"

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

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