Самоуправляемый способ автоматизации процесса подачи заявок.

Итак, вы ищете работу? — Я среди бесчисленного множества других. Дни поиска работы в еженедельной газете давно прошли, особенно для человека с набором навыков в области разработки программного обеспечения. Сегодня лучший способ поиска вакансий инженера-программиста — онлайн через доски объявлений, такие как Indeed, Glassdoor, ZipRecruiter и AngelList.

Кроме того — и это разочаровывает — многие из моих коллег-разработчиков программного обеспечения обычно нанимаются внутри компании или по рекомендации. Но что делать соискателям, когда у них нет этих связей или они уже работают в компании?

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

С появлением онлайн-досок вакансий стало проще искать на одном сайте, а не посещать списки каждого потенциального работодателя по отдельности. Хотя это делает процесс подачи заявки более простым, оно также вносит целый ряд новых сложностей.

Когда я смотрю на доску объявлений, я часто задаюсь вопросом:

  • Все ли интересующие меня вакансии перечислены на доске объявлений?
  • Компании, перечисляющие эти доступные вакансии на доске объявлений, когда-либо нанимают из этого источника?
  • Сколько сотен других людей претендуют на эту вакансию?
  • Если мое приложение выделяется среди конкурентов, как я узнаю?
  • Кто тот человек на другом конце, который просматривает приложения?

И, наконец, я ловлю себя на том, что спрашиваю…

Стоит ли мое время откликаться на вакансии, указанные на досках объявлений?

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

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

На самом деле я хочу тратить как можно меньше времени на поиск вакансий в Интернете.

В прошлом меня нанимали на должности, которые я находил в Интернете (с небольшой работой с менеджерами по найму). Однако в мире с растущими техническими талантами и растущим желанием работать удаленно мне часто кажется, что я отправляю свои заявки в пустоту.

Итак, я спросил себя…

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

Агрегированные списки вакансий на досках объявлений — идеальное место для методичной и последовательной подачи заявок на каждую из них. Созданная мной программа Selenium WebDriver автоматизирует поисковые фильтры, заполнение полей и процесс сопроводительного письма, поэтому пользователю не нужно тратить на это свое время.

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

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

Компании автоматизируют процесс проверки резюме потенциальных сотрудников. Почему соискателям не следует автоматизировать процесс подачи заявок?

Несмотря на экономию времени, Selenium WebDriver, вероятно, не лучший подход к созданию оригинального приложения и сопроводительного письма. Однако мне интересно, читает ли менеджер по найму каждое сопроводительное письмо и заявку? Или он просматривает резюме и выбирает первые десять, которые привлекают их внимание?

Хотя создание собственной программы Selenium WebDriver Auto Application может быть не идеальным решением, оно возвращает соискателю время, потраченное на процесс подачи заявки.

Я обсудил свое отношение к эффективности подачи заявок на вакансии на досках объявлений, и ниже я реализую решение некоторых сомнений, которые у меня возникают в связи со всем этим процессом.

TL;DR — Если вы устали от работы до тошноты подавать заявки на работу за работой, оставшаяся часть этой статьи даст вам некоторое представление о том, как автоматизировать некоторые из этих процессов. Большинство разработчиков используют Selenium для автоматизированного тестирования (чтобы увидеть, как «виртуальный пользователь» будет взаимодействовать с веб-сайтом и правильно ли он работает). Я адаптировал использование Selenium WebDriver для автоматизации процесса поиска работы.

ПРОЦЕСС УСТАНОВКИ

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

Установить Селен:

npm install selenium-webdriver

Установите веб-драйвер (я использовал Chromedriver и рекомендую его). Убедитесь, что вы загружаете правильную версию. Вы можете найти свою версию Chrome, нажав на три точки в правом верхнем углу окна браузера:

Обновите путь к загруженному exe-файлу Chromedriver:

sudo mv Chromedriver /usr/local/bin

Эта ссылка помогла мне понять, как включить расположение ChromeDriver в переменную среды PATH. Переменная PATH позволяет Chrome найти загруженный исполняемый файл ChromeDriver.

Если вы используете macOS, вам также может потребоваться обновить системные настройки, чтобы разрешить загрузку Chromedriver из ненадежного источника.

Внимание… этот шаг может быть очень простым, а может потребоваться некоторое время, чтобы все заработало должным образом.

Как только Chromedriver будет установлен и переменная среды PATH указывает на правильное расположение, вы сможете открыть файл .js в своей среде IDE. Затем вырежьте и вставьте приведенный ниже код, запустите его и наблюдайте, как ChromeDriver творит чудеса. Если волшебства не происходит, вам, скорее всего, придется убедиться, что ваш PATH правильный и / или устранить неполадки в вашем конкретном сообщении об ошибке.

Небольшой код, чтобы начать и посмотреть, правильно ли вы выполнили установку Selenium:

После проверки правильности работы WebDriver и Selenium начинается самое интересное. Отсюда нет предела возможностям использования Selenium WebDriver в ваших интересах в различных задачах, которые вы хотели бы автоматизировать (не для целей тестирования). Теперь вы можете переходить на определенные веб-сайты и взаимодействовать со страницей (т. е. входить в систему, используя свое имя пользователя и пароль).

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

Отличное видео-презентацию этой концепции и песочницы можно найти здесь: http://latentflip.com/loupe.

Если у вас уже есть базовое представление об асинхронном коде javascript, вы готовы двигаться дальше и начать использовать Selenium WebDriver для взаимодействия с некоторыми различными веб-сайтами.

Сложности возникают с сайтами, на которых нет легко идентифицируемых селекторов элементов HTML (идентификаторы или уникальные имена классов). Ваш классический `document.getElementById()` или `document.getElementsByClassName()` (в Selenium: `.findElement(By.name()` ) методы становятся довольно сложными. Это могли быть просто некоторые синтаксические ошибки, но это привело меня к использованию Xpath для выбора элементов в DOM. ») и позволяет пользователю реализовать различные методы поиска элементов в Selenium.

Примечание. Найти нужные элементы и заставить WebDriver правильно взаимодействовать с ними может оказаться непростой задачей. Это отличный ресурс для понимания Xpath и того, как использовать локаторы Xpath для определения труднодоступных элементов HTML.

Надеемся, что этой исходной информации достаточно, чтобы вы начали использовать Selenium WebDriver для создания автоматических тестов . Или, что еще лучше, напишите программу, которая автоматически применяет для вас вакансии.

Для краткости я не буду приводить пошаговую инструкцию, как именно я приступил к написанию кода, который автоматизировал прием заявок на работу на angel.co. Но если вам интересно посмотреть, как я это сделал, вы можете разветвить и клонировать мой репозиторий — github.com/coloradorca/SeleniumApply.

Вот видео, как программа его отправляет…

Особая благодарность Дилану, Майлзу и Максу за помощь на этом пути.