- PVSM.RU - https://www.pvsm.ru -
Добрый день.
Недавно столкнулся с проблемой при проведении UI тестов: Selenium не имеет функции получения статус кода страницы. Как оказалось в дальнейшем, разработчики Selenium специально не предусмотрели данную возможность т. к. это противоречит концепции симуляции работы пользователя (подразумевается что пользователь не способен посмотреть статус код ответа).
После долгих поисков в интернете стало понятно, что сделать это можно только при помощи внешних средств:
И многие другие.
Также существуют более изысканные варианты:
При помощи фреймворков (Codeception, Mink и пр.), использующих более одного браузера (к примеру PhpBrowser и ChromeDriver).
PhpBrowser консольный, и имеет возможность получения статус кодов, но не может работать динамически изменяющимися страницами. В ChromeDriver всё наоборот. То есть для написания автотеста для динамически изменяющейся страницы используется ChromeDriver. Куки из сессии ChromeDriver сохраняются, запускается сессия PhpBrowser, туда пробрасываются сохранённые куки и только после этого вызывается функция получения статус кода. Не самый быстрый метод, как по мне.
Я предлагаю решение внутренними средствами Selenium, которое будет работать на любом фреймворке. А именно вставка функции на js. Данная функция поддерживается любым фреймворком на базе Selenium и не требует запуска дополнительных сессий.
public function getStatusCode()
{
return $this->executeInSelenium(function (FacebookWebDriverRemoteRemoteWebDriver $webdriver) {
return $webdriver->executeScript(
'var xhr = new XMLHttpRequest();
xhr.open('GET', '' . $webdriver->getCurrentURL() . '', false);
xhr.send();
return String(xhr.status)');
});
}
Надеюсь данная информация будет кому нибудь полезна.
Автор: мастер слога
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/testirovanie-veb-servisov/296303
Ссылки в тексте:
[1] CURL: https://curl.haxx.se/
[2] HttpURLConnection: https://docs.oracle.com/javase/9/docs/api/java/net/HttpURLConnection.html#getResponseCode%28%29
[3] Rest-assured: https://github.com/rest-assured/rest-assured
[4] Источник: http://habrahabr.ru/sandbox/124401/
Нажмите здесь для печати.