Метод selectButton
Метод selectButton класса Crawler
используется для поиска кнопки внутри HTML-формы.
Он принимает значение кнопки (её текст или атрибут
name) и возвращает объект CrawlerForm,
который позволяет заполнять поля формы и отправлять её.
Метод удобен при тестировании веб-форм, когда нужно
программно нажать на определённую кнопку.
Синтаксис
$form = $crawler->selectButton(string $value);
Пример
Давайте создадим простую HTML-форму с кнопкой и найдём её с помощью метода selectButton:
<form action="/submit" method="post">
<input type="text" name="username">
<button type="submit">Save</button>
</form>
Теперь выберем кнопку с текстом Save:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\HttpFoundation\Response;
class FormController extends AbstractController
{
public function index(): Response
{
$html = '<form action="/submit" method="post">
<input type="text" name="username">
<button type="submit">Save</button>
</form>';
$crawler = new Crawler($html);
$form = $crawler->selectButton('Save');
return new Response($form->getUri());
}
}
?>
Результат выполнения кода:
"/submit"
Пример
Также метод может искать кнопку по атрибуту name.
Рассмотрим форму с кнопкой, у которой задано имя:
<form action="/save" method="post">
<input type="text" name="title">
<button type="submit" name="save_button">Send</button>
</form>
Выберем кнопку по имени save_button:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\HttpFoundation\Response;
class FormController extends AbstractController
{
public function index(): Response
{
$html = '<form action="/save" method="post">
<input type="text" name="title">
<button type="submit" name="save_button">Send</button>
</form>';
$crawler = new Crawler($html);
$form = $crawler->selectButton('save_button');
return new Response($form->getMethod());
}
}
?>
Результат выполнения кода:
"POST"
Смотрите также
-
класс
Crawler,
который предоставляет методы для навигации по DOM -
метод
selectLink,
который выбирает ссылку по её тексту -
класс
CrawlerForm,
который представляет форму и позволяет с ней работать -
метод
forms,
который возвращает все формы на странице