- PVSM.RU - https://www.pvsm.ru -

Метод получения статус кодов при работе с Selenium

Добрый день.

Недавно столкнулся с проблемой при проведении UI тестов: Selenium не имеет функции получения статус кода страницы. Как оказалось в дальнейшем, разработчики Selenium специально не предусмотрели данную возможность т. к. это противоречит концепции симуляции работы пользователя (подразумевается что пользователь не способен посмотреть статус код ответа).

Возможные решения

После долгих поисков в интернете стало понятно, что сделать это можно только при помощи внешних средств:

И многие другие.

Также существуют более изысканные варианты:
При помощи фреймворков (Codeception, Mink и пр.), использующих более одного браузера (к примеру PhpBrowser и ChromeDriver).

PhpBrowser консольный, и имеет возможность получения статус кодов, но не может работать динамически изменяющимися страницами. В ChromeDriver всё наоборот. То есть для написания автотеста для динамически изменяющейся страницы используется ChromeDriver. Куки из сессии ChromeDriver сохраняются, запускается сессия PhpBrowser, туда пробрасываются сохранённые куки и только после этого вызывается функция получения статус кода. Не самый быстрый метод, как по мне.

Решение средствами Selenium

Я предлагаю решение внутренними средствами Selenium, которое будет работать на любом фреймворке. А именно вставка функции на js. Данная функция поддерживается любым фреймворком на базе Selenium и не требует запуска дополнительных сессий.

Пример для Codeception (PHP)

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/