Вчера я почти весь день пытался переложить на автоматику одну скучную процедуру: заполнить форму
в личном кабинете. Руками это двадцать минут и каждый раз раздражение — идеальный кандидат,
чтобы больше не делать этого самому.
Идея была простая. Скрипт открывает браузер, находит поля, вставляет текст, я смотрю глазами
и жму «отправить». Логика на пару страниц, никакой магии.
К вечеру выяснилось, что логика — самое лёгкое во всей этой затее. Сломалось то, о чём я вообще
не думал.
Первое: вход
Чтобы автоматика работала в моём браузере, я скопировал папку с его настройками — туда, где лежит
сохранённый вход. Копия открылась нормально, но форма попросила пароль заново.
Причина оказалась неприятной: «сохранённый вход» — это не папка, а живой процесс. Часть состояния
браузер держит в памяти и дописывает на диск в момент закрытия. Копия, снятая не в тот момент,
выглядит целой, весит ровно столько же — а входа в ней нет. Ошибки нигде не написано. Просто
вместо нужной страницы открывается форма авторизации, и дальше всё, что делает скрипт, — это
бодро заполняет поля, которых на самом деле не существует в нужном смысле.
Второе: кракозябры
Форма в конце концов открылась, поля нашлись, текст вставился. И в одном поле вместо названия
получателя появился набор символов: русские буквы превратились в мусор.
Текст шёл по цепочке: мой скрипт — оболочка на компьютере — удалённая машина — браузер. На одном
из этих слоёв кодировка молча подменилась. Никакой ошибки при этом не выдаётся: поле не пустое,
скрипт отчитывается об успехе, а внутри — бессмыслица.
И вот тут самое важное. Восемь полей из девяти заполнились правильно. Прогресс был налицо,
работа шла, я видел, как форма наполняется. Единственная ошибка сидела в самом скучном поле,
куда я и не смотрел.
Почему я не нажал «отправить»
Потому что эта кнопка необратима. Пока форма не ушла, ошибка стоит двадцати минут ручной работы.
После отправки она стоит недель переписки и объяснений, и это в лучшем случае.
Поэтому я остановился и заполнил всё руками. Не из недоверия к автоматике — она, в общем,
справилась. А потому что цена ошибки на последнем шаге несоизмерима со стоимостью проверки
на предпоследнем.
Что я поменял
- Проверять не то, что ввёл скрипт, а то, что видно в поле. Читать значение обратно
со страницы и сравнивать с эталоном — до всякой отправки. Лог «успешно» ничего не значит:
он говорит о том, что команда прошла, а не о том, что получилось правильно.
- Вход — отдельным шагом. Сначала убедиться, что я внутри (вижу своё имя, а не форму входа),
и только потом заполнять. Иначе скрипт старательно работает не с той страницей.
- Русский текст — проверять первым же полем. Одно короткое поле с заведомо известным
ответом. Если там мусор, остальные девять заполнять бессмысленно.
- Последняя кнопка — руками. Всегда. Пусть человек прочитает итог глазами, прежде чем
что-то уйдёт безвозвратно.
Урок дня
Автоматизация ломается не на сложном, а на скучном: на входе (кто я для системы) и на дороге
текста (в каком виде он доехал). Оба места невидимы, пока всё идёт гладко, и оба дают не ошибку,
а правдоподобный мусор.
Проверка на пять минут. Возьми любую форму, которую за тебя заполняет скрипт или помощник,
и посмотри на результат глазами — не на лог, не на галочку, а на сами поля. Если хоть одно
из них врёт, проверка была не о том. И держи последнее действие за человеком: автоматика пусть
доводит до восьмидесяти процентов, а решение «отправить» остаётся за тобой.
Это заметка из серии «Учусь»: я не пишу теорию — описываю то, что реально произошло в работе, вместе с ошибками.
Комментарии 0
Пока никто не высказался — будьте первым.