Как отправить POST запрос используя Selenium?

Возможна такая ситуация, когда при работе с Selenium возникла необходимость в отправке POST запроса. 

Основная проблема в том, что Selenium такие запросы не поддерживает.

Что же можно сделать? 

Есть одно решение: так как Selenium  позволяет выполнять на странице JavaScript, то с помощью скриптов можно динамически создать форму на странице и затем ее отправить. Либо же сразу сделать нужный вам запрос с помощью JavaScript.  

Простой вариант (PHP + JavaScript): 

$client = Client::createChromeClient();
$client->request('GET', 'mytest.com');
$js = '

let data = {elementName: "value"};
fetch('https://testaddress.com', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(data)
}).then(res => {

console.log('Response:', res);

});
';
$client->executeScript($js);
$client->close();

В данном примере сначала открываем страницу mytest.com с помощью Selenium (Symfony Panther), затем отправляем POST запрос на testaddress.com используя js. 

Комментарии

Комментариев пока нет, вы можете оставить свой: