· 3 мин чтения

Вход, кодировка и последняя кнопка

Хотел отдать автоматике скучную форму в личном кабинете. Она справилась почти со всем — и именно это оказалось опаснее полного провала.

ИИавтоматизацияпрактика

Вчера я почти весь день пытался переложить на автоматику одну скучную процедуру: заполнить форму

в личном кабинете. Руками это двадцать минут и каждый раз раздражение — идеальный кандидат,

чтобы больше не делать этого самому.

Идея была простая. Скрипт открывает браузер, находит поля, вставляет текст, я смотрю глазами

и жму «отправить». Логика на пару страниц, никакой магии.

К вечеру выяснилось, что логика — самое лёгкое во всей этой затее. Сломалось то, о чём я вообще

не думал.

Первое: вход

Чтобы автоматика работала в моём браузере, я скопировал папку с его настройками — туда, где лежит

сохранённый вход. Копия открылась нормально, но форма попросила пароль заново.

Причина оказалась неприятной: «сохранённый вход» — это не папка, а живой процесс. Часть состояния

браузер держит в памяти и дописывает на диск в момент закрытия. Копия, снятая не в тот момент,

выглядит целой, весит ровно столько же — а входа в ней нет. Ошибки нигде не написано. Просто

вместо нужной страницы открывается форма авторизации, и дальше всё, что делает скрипт, — это

бодро заполняет поля, которых на самом деле не существует в нужном смысле.

Второе: кракозябры

Форма в конце концов открылась, поля нашлись, текст вставился. И в одном поле вместо названия

получателя появился набор символов: русские буквы превратились в мусор.

Текст шёл по цепочке: мой скрипт — оболочка на компьютере — удалённая машина — браузер. На одном

из этих слоёв кодировка молча подменилась. Никакой ошибки при этом не выдаётся: поле не пустое,

скрипт отчитывается об успехе, а внутри — бессмыслица.

И вот тут самое важное. Восемь полей из девяти заполнились правильно. Прогресс был налицо,

работа шла, я видел, как форма наполняется. Единственная ошибка сидела в самом скучном поле,

куда я и не смотрел.

Почему я не нажал «отправить»

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

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

Поэтому я остановился и заполнил всё руками. Не из недоверия к автоматике — она, в общем,

справилась. А потому что цена ошибки на последнем шаге несоизмерима со стоимостью проверки

на предпоследнем.

Что я поменял

  1. Проверять не то, что ввёл скрипт, а то, что видно в поле. Читать значение обратно

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

он говорит о том, что команда прошла, а не о том, что получилось правильно.

  1. Вход — отдельным шагом. Сначала убедиться, что я внутри (вижу своё имя, а не форму входа),

и только потом заполнять. Иначе скрипт старательно работает не с той страницей.

  1. Русский текст — проверять первым же полем. Одно короткое поле с заведомо известным

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

  1. Последняя кнопка — руками. Всегда. Пусть человек прочитает итог глазами, прежде чем

что-то уйдёт безвозвратно.

Урок дня

Автоматизация ломается не на сложном, а на скучном: на входе (кто я для системы) и на дороге

текста (в каком виде он доехал). Оба места невидимы, пока всё идёт гладко, и оба дают не ошибку,

а правдоподобный мусор.

Проверка на пять минут. Возьми любую форму, которую за тебя заполняет скрипт или помощник,

и посмотри на результат глазами — не на лог, не на галочку, а на сами поля. Если хоть одно

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

доводит до восьмидесяти процентов, а решение «отправить» остаётся за тобой.

Это заметка из серии «Учусь»: я не пишу теорию — описываю то, что реально произошло в работе, вместе с ошибками.

Комментарии 0

Пока никто не высказался — будьте первым.

Есть вопрос по дереву или по проекту — напишите, отвечу сам.

ildare@ildare.ru