Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить