У вас были ситуации, когда надо найти некий текст на сайте, где нет поиска и вы не имеете доступа в базу данных. Что делать в таком случае, лопатить информацию в ручную. Есть решение лучше…
Был в моей практики такой случай. Есть на портале журнал загрузок прайсов. Объем более 60 тысяч записей. На фронт информация выдается порциями: по двадцать строк на каждой странице. И таких страниц более трех тысяч. Информация хранится в базе данных, к которой я не имел доступа. Поиск по сайту не организован.
Нужно было найти конкретный прайс. Обратился за помощью к коллегам. Те развели руками — ищи в ручную.
Я пробежался по первым 10 страницам списка и понял, что так искать не реально. Нужно автоматизировать поиск. Но как?
Если бы был доступ к БД, вычленить необходимую информацию не составило-бы труда.
Стал думать, как решить эту проблему. Для начала проанализировал, какие методы бэка выводят информацию по прайсам. Нашел. Отлично в аргументах к запросу есть пагинация. Уже проще, можно менять размер выводимых страниц. Но объем анализируемой информации слишком велик, что бы его вывести одной страницей — это даст нагрузку на сервер. Естественно это заметят и дадут мне по шапке за такую игру с боевым порталом.
Значит надо через postman запустить автоскрипт и пусть он ищет нужную мне информацию, беря с бэка для анализа информацию небольшими порциями.
После запуска скрипта, информация была обнаружена на 126 странице, через 1 минуту поиска.На самом деле скрипт работал даже меньше минуты. И вот представьте себе, сколько бы мне понадобилось времени, чтобы дойти до 126 страницы, перебирая все руками. А если бы нужный прайс оказался бы на 3000 странице.
Суть проблемы ясна, теперь перейдем к написанию решения.
Посмотрите это видео, там я подробно показываю, как организовать поиск.
Здесь в статье я выложу только исходники, которые вам пригодятся для того, чтобы повторить мой пример на практике.
Это json с параметрами для прогона авто теста в постмане (смотрите видео)
[{"page": 1},
{"page": 2},
{"page": 3},
{"page": 4},
{"page": 5},
{"page": 6},
{"page": 7},
{"page": 8},
{"page": 9},
{"page": 10},
{"page": 11},
{"page": 12},
{"page": 13},
{"page": 14},
{"page": 15},
{"page": 16},
{"page": 17},
{"page": 18},
{"page": 19},
{"page": 20},
{"page": 21},
{"page": 22},
{"page": 23},
{"page": 24},
{"page": 25},
{"page": 26},
{"page": 27},
{"page": 28},
{"page": 29},
{"page": 30}
]
А здесь код, который надо вставить в postman во вкладку Tests:
// получить переменную из окружения environment
const searchString = pm.environment.get("search_string");
pm.test("Поиск в body: На этой странице есть текст '" + searchString +"'", function () {
pm.expect(pm.response.text()).to.include(searchString);//поиск
});
Остальные нюансы (урл и параметры запроса) вы узнаете в видео, которое выложено выше.