Как сделать мои тесты на селен обнаруживаемыми сервером? - PullRequest
0 голосов
/ 15 марта 2019

В настоящее время я работаю над улучшением наших тестов пользовательского интерфейса на основе селена.Одна функция, которую я ищу, - это надежный способ для нашего веб-сайта определить, какой трафик поступает из наших тестов, поэтому я могу отфильтровать этот трафик по показателям использования нашего браузера и регистрации.

Одна мысль, которая у меня возникла, заключается в том, чтоустановить файл cookie для отслеживания с селеном, который я мог прочитать на стороне сервера, чтобы добавить к своим журналам / метрикам, упрощая его фильтрацию.Проблема в том, что файлы cookie зависят от домена, и, насколько я знаю, их нельзя было бы прочитать с других сайтов.Файлы cookie также являются ограниченным ресурсом, и, учитывая размер / распределенный характер нашего веб-сайта, вполне возможно столкнуться с ситуацией, когда это может привести к ограничению размера файлов cookie / заголовков и вызвать проблемы на странице.

Естьэто мой лучший вариант, или есть другой надежный способ определить с моего веб-сервера, автоматизирована ли моя страница с помощью селена.(Я не пытаюсь бороться с ботами, у нас есть другие системы для защиты от DoS / DDoS-атак.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Итак, серверу, очевидно, нужен какой-то токен, который сообщает ему, что сессия основана на селене.Учитывая это, вот что я хотел бы сделать.

Создать супер простой API на вашем сервере.Пусть этот API возьмет токен сеанса вошедшего в систему пользователя и передаст его в API (почти всегда автоматически).Когда API получит этот токен сеанса, отметьте что-нибудь в базе данных (новая таблица или та же таблица, в которой хранятся идентификаторы сеанса, если таковые имеются).

Пусть API помечает сеанс как тестовый сеанс и, следовательно, недопустим для метрик.

Это не является статистически значимым воздействием на любой сервер, поэтому не нужно беспокоиться о ресурсах или воздействии.

Следует использовать очень простой API с выделенным кодом, очень легкую таблицу, в которой может быть просто один столбец с внешним ключом для соответствующего идентификатора сеанса.Все вставленные идентификаторы сеанса в этой таблице, в силу существующего здесь, являются тестовыми сеансами.

И затем, ваша запись метрик должна будет добавить одно предложение к запросу, который фактически имеет "WHERE (SELECT COUNT (sessionId)) FROM TestSessionsTable WHERE sessionId = currentIdChecked) = 0 "

И это даст вам то, что вам нужно.Я рад, что мне сообщили о лучшем решении, но это выглядит как простейшее усилие с наименьшим влиянием на ресурсы.

Что касается обнаружения сеансов Webdriver на стороне клиента, вы можете использовать C. Peck'sпредложить или напрямую вызвать API из вашей автоматизации, используя логику Javascript Executor WebDriver.

0 голосов
/ 15 марта 2019

При использовании Chrome драйвер Selenium внедряет свойство веб-драйвера в объект навигатора браузера.Это означает, что для меня, добавив следующие js на мою страницу, перенаправил их в StackOverflow:

if (navigator.webdriver == true) {
    window.location = "https://stackoverflow.com";
}

Так что я думаю, просто замените window.location = "https://stackoverflow.com"; на то, что вы хотите, я предполагаю, что регистрация запросов где-то или как-тоисключая их из любого инструмента, который вы используете для измерения трафика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...