Автоматический поиск текста, не имея доступа в БД

У вас были ситуации, когда надо найти некий текст на сайте, где нет поиска и вы не имеете доступа в базу данных. Что делать в таком случае, лопатить информацию в ручную. Есть решение лучше…

Был в моей практики такой случай. Есть на портале журнал загрузок прайсов. Объем более 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);//поиск 
});

Остальные нюансы (урл и параметры запроса) вы узнаете в видео, которое выложено выше.

Понравилась статья? Поделиться с друзьями:
Интересно о полезном
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.