Dev: как отлаживать Easy Apply Bot
Узнайте, как находить и исправлять ошибки в боте Reapplied, используя продуктовую базу, AdPower и отладку через Selenium и Action Chains. Подробный гайд по тестированию и дебагу вакансий на LinkedIn.
В этом руководстве мы разберёмся, как дебажить и тестировать работу бота reapplied на примере вакансий с ошибками. Мы рассмотрим, как находить проблемные вакансии, анализировать причины ошибок через продуктовую базу, а также использовать AdPower для работы с профилем клиента.
Далее мы пройдём процесс запуска тестов, включения режима дебага и поиска решений для типовых ошибок, таких как некликабельные кнопки. Это поможет понять, как выявлять и устранять проблемы в автоматизации подачи заявок.
Давайте начнём
Привет! Сейчас объясню, как дебажить и тестировать из reapplied бота. Итак, сначала нужно найти вакансии для клиента, в которых были ошибки. Заходим в продуктовую базу.

Табличка Apply bot попытка.

Мы можем выбрать Minty ID и тип бота, чтобы посмотреть причины ошибок. Вот я хочу разобраться, что это такое — not clickable из reapplied. Почему так происходит? Я беру вакансию, затем перехожу в ENV.


Я уже все это вставил.


Вот эту вакансию берем.

Указываю пять семь четыре дополнительных клиента.

Все!

Environment.

Test. Огонь! У нас готовы ENV для дебага. Далее. Я должен открыть у себя локально AdPower.
Это наш антидетект-браузер. Откройте профиль клиента, с которым мы будем работать. Мы видим сейчас, что у нас Minty ID 574.










По-питоновски, да, пишется через нижнее подчеркивание с маленькой буквы. Ну вот, я нашел. В целом у меня... ага, нужно открыть. Давайте откроем.

Вот я открываю браузер. То есть в этом браузере будет происходить отладка.

Вот огонь!

Хорошо. Далее переходим в наш проект и открываем тесты.


Тесты.


Run test Minty, и, по сути, это эн ту энд тест, который запускает весь флоу на одном клиенте.



Что мы делаем? Мы спускаемся вниз и просим включить режим отладки.



Вот сейчас у меня задача: я обнаружил ошибку, из-за которой мы не могли кликнуть на кнопку Вот.


И покажу, как я ее решил. Я ее решил... Ммм. Так, наверное, не тут.


Вот тут. Так, так, так. Да, вот здесь. То есть у нас была обычная кнопка-клик, селениумовская, но она не работала.




Я добавил с помощью Action Chains. Нужно, чтобы он навёл мышку на этот элемент и кликнул. И на основной фулбэк я сделал клик через GS. Но это крайний случай, потому что... Потому что я не хочу, чтобы у нас программа работала через обычный GS.



Это будет еще один повод нас забанить.

Сами понимаете, есть разница: когда вы наводите мышку и кликаете кнопку, или когда JavaScript-код выполняет клик внутри. LinkedIn, возможно, это отслеживает, и это не очень хорошо.

Поэтому нам нужно это протестировать.

Отлично! Вот у меня здесь дебаггер.

Ну, погнали дальше. Все, он сейчас должен что-то делать.

Откроем консоль. Ну да, он здесь собирает разные данные о клиенте.


Я проверял, что все работает. В целом, можно отжать.



Хм. Так как мы хотим проверить, является ли это базисом, нам нужно перейти на страницу LinkedIn.




Вот база страниц LinkedIn.



Вот здесь можно поставить дебаггер.


Чтобы здесь остановиться. Вот. Ну, по логам можно увидеть, что происходит. И так далее.

Вот. Easy Apply Jobs.

Все, кликаем. Вот Easy Apply.

Тут далее будут валидации.


Нам они, наверное, не так важны. Вот для нас важнее понять, заработает ли у нас кнопка. Ну вот, видим, что всё подгрузилось. И сейчас будут проходить длительные проверки на открытие различных форм, чтобы нас не разлогинило и так далее.




Тут подождем. Вот, кстати, да.

И по поводу рефакторинга на будущее — непонятно, что здесь происходит.

Я думаю, что сейчас программа определяет, истекла ли вакансия, не истекла, залогинены ли мы в браузере или нет.

Проверяет, действительно ли это легкая вакансия. Но мы видим, что появляются какие-то тайм-аут эксепшны.

Непонятно, зачем они нужны. Мы уже минуту там ждем, чтобы сделать проверки. Это удлиняет весь флоу подачи.

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

Ждем.



Вот, все.



Вот супер! Вот открытая форма Easy Apply. Вот сейчас он должен пойти.



Вот. Да, сделать и кликнуть на эту кнопку.

Так, давай попробуем.

Тук. Вот. И это я тоже исправил.

Я добавил еще один путь, который точно сработает.

Вот. Ну, можно подбажить это.

Ну, я уже это сам, конечно, дебажил. Вот.

Вот он пишет ??????? Ну ладно, так и сделаем.




Он никак не может найти эту кнопочку.

Колд нот гет. Ну вот, он нашел. Вот как раз селектор. Что я здесь придумал? Я заметил, что когда вакансия открывается в попапе на LinkedIn, в ссылке есть параметр opensduiplayflow.true.
Вот такая фигня.

И, соответственно, это изи плаг. Когда вакансия долго открыта, происходит редирект на другой сайт. Там для этой кнопки используется другой путь.

Вот. И теперь нужно на нее кликнуть.

Мы нашли ее, но нам нужно сделать клик.


Тут происходит какой-то джи эс.


Вооот.

И вот в чем была ошибка. И вот элемент click intercept exception. И все плохо.

У нас было очень много ошибок.

Теперь мы перехватываем эту ошибку и пробуем сделать это через action chain.


И через экшен чейн у нас тоже не получилось.

Почему там? Ну-ка, давай руками продебажим.

Клик.

Он даже не вывел ошибку.
Ну вот и...



фигня полная.



То есть он не видит.

Хотя... Вот.

Хотя он должен был нажать.

Ну, я сейчас дальше пойду дебажить. Такой вот флоу.


Мы можем открыть таблицу с Minty, выбрать пять семь четыре, увидеть имя, скопировать его, перейти в AdPower и вставить сюда.
Итак, в целом, можно весь процесс дебагать от начала до конца.