Рубрики
Без рубрики

Как я спас 8 часов, автоматизируя мою охоту на встречу Gov с помощью Python + Selenium

Европейская ситуация, так что любой британский экспант / иностранец, как я, что живет в Испании знать … Теги с Python, Automation, Selenium, начинающим.

Европейская ситуация

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

Там всегда что-то.

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

Сейчас из-за Brexit. , Мне пришлось идти и сделать свои отпечатки пальцев и зарегистрироваться, как долгосрочный резидент, прежде чем мой европейский статус не отключается!

Невыполнение этого обновления удостоверения личности будет иметь несколько довольно раздражающих последствий с моей способностью продолжать работать в этой стране и строить здесь жизнь!

Страшный офис

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

Я также не шучу о старых соседах домой, плача домой после поездки Алуше.

Если вам нужно сделать какие-либо документы в Испании, планируйте забронировать полдня до полной работы с работы.

Идеальная установка

Мне повезло тратить полный день летом в поисках встреч, чтобы сделать мои отпечатки пальцев. Я даже взял свою родную подругу со мной как резервную копию для проблем, которые они должны были дать мне (как всегда) ….. Сделано, все сделано.

  • ” Вернитесь на 1 месяц от сейчас и соберите свою новую удостоверение личности »

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

Идиот я

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

Моя подруга спрашивает

«Когда ваша встреча была забрать свою карту ……?»

Мы оба посмотрели друг на друга, зная, что у меня рояльно испорченные.

Мне было 1 месяц поздно, чтобы забрать свой идентификатор, а дата отсечения для британских эмиссий было через 1 месяц.

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

  • “НЕТ! Вы бронируете встречу. Если нет назначений, вы попробуйте снова на следующий день »

Так как я упоминал ранее «Часы/сутки/недели, пытаясь найти встречу» И мой европейский статус на грани смерти. Не хорошее место, чтобы быть.

Python к спасению

Длинная и короткая из этого – я только начал новую работу, поэтому я не в состоянии тратить часы, освежающую страницу правительства, надеясь, что смогу вырвать кого-то отмененную встречу.

Итак, я построил небольшой сценарий, который автоматизировал на встречу на прием для меня – если было что-то доступное Мой Mac начнет кричать на меня из другой комнаты, где я мог бы бежать, проверять доступные встречи и забронировать его.

Я смог комфортно войти с работой, зная, что в какой-то момент мой Mac начнет кричать в его красивый роботизированный голос, и все будет хорошо.

Настройка

Для этого я решил использовать Selenium, модуль Python, который используется для запуска автоматизированных тестов на веб-сайтах.

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

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

Импорт

Я узнал несколько вещей об эффективной пользу селена. Одна вещь импортировала ожидаемые условия. Это позволяет автоматически ждать, пока на странице не появится конкретный элемент.

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

Вам также не нужно программировать время ожидания 3 секунды, например, в то время как страница нагрузки.

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

  • «Давайте подделать быть человеком и ждать 4 секунды прямо здесь»

Я написал весь код автоматизации перед рукой, а затем застрял его в цикле.

Если нет назначений, «LetS_Go» всегда будет Правда , в противном случае, если мы найдем встречу, мы сократив программу и измените «lets_Go» на false.

Мы получаем () Обеспокоенный сайт и получите эту партию.

Это грубые, но я был в гонке против времени.

Нажав/набрать/ждать

Вот пример нажатия вокруг веб-сайта.

В большинстве случаев вы можете использовать инспектор страницы, чтобы найти элемент, который вы хотите нажать, а затем скопируйте его XPath.

Сопряжение этого XPath с ожидаемыми условиями IE: EC, ожидая максимума 10 секунд, пока не будет наличие элемента, мы автоматически заявили Python ждать, пока он не сможет найти под вопросом кнопки.

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

.Click () – одна из тех плохих вещей.

.send_keys. () другой (этот входной текст в поле формы)

Вы заметите, что я притворяюсь человеком, ожидая 2 секунды после заполнения формы поля. Легко притворяться человеком в реальном мире – в Python это просто чувствует себя заставленным.

Выполнение JS.

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

Веселая часть

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

Вот когда мы начинаем процесс и надеемся, что за последние 5 минут мы потратили, что-то стало доступно – поэтому мы пытаемся снова и снова.

Тебе известно, потому что…. Brexit через 25 дней.

Теперь для грубого, неправильно написанного теста.

Нет назначений и хорошего гражданина Интернета

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

Поэтому типичный сценарий состоит в том, что мы получаем сообщение (по-испански очевидно) каждый раз, когда нет назначения – если это произойдет

  • Закройте браузер
  • Подождите 2100 секунд (35 минут), чтобы попробовать еще раз и снова и снова и снова.

Почему я выбери 35 минут? Чтобы не повторно ударить на сайт, возможно, вызвав какого-то блокатора бота и в целом, просто будучи ответственным гражданином Интернета, не перегружая другие народные серверы с автоматизированными запросами.

Если честно, настоящие люди, вероятно, достигают этого сайта чаще всего, чем каждые 35 минут, чтобы обеспечить встречу, и я, наверное, будет – вручную, но да – ответственная автоматизация.

Однако Если не оказывается неверным назначениям, и что сообщение не отображается на странице, это означает, что есть встречи. В этом случае

  • Расскажите MAC неоднократно кричать на максимальном объеме ” Назначение доступно
  • Изменить LetS_Go в false и выйти из программы.

8 часов жизни спасены

Всего эта программа была запущена в 7 утра и проработала через сайт каждые 35 минут до 3 вечера, постоянно ищет открытые встречи.

Я бы хотел автоматически забронировать в то время, который подходит мне, но без доступа к страницам бронирования я не смог найти «коды» для цели и автоматизации, поэтому это был лучший сценарий.

Оригинал: “https://dev.to/calvin087/how-i-saved-8-hours-automating-my-gov-appointment-hunt-using-python-selenium-4e81”