Скрипт будет зависеть от верстки сайта, и будут меняться при ее изменении. Браузеры имеют вместе с консолью разработчика отличный инспектор, если нажать правую кнопку мыши на желаемом элементе на форме (если возможность заблокирована, то нужно жать shift+правая кнопка мыши) и выбрать Inspect/Посмотреть код, а затем уже в открывшемся инспекторе выделить нужный элемент (input например) и в меню выбрать Copy -> CSS selector, то полученную строку можно напрямую скормить $('строка css selector') и получить нужный элемент, у которого можно править .value=xxx или нажимать .click(). Могут возникнуть сложности с кастомными select или там где форма отслеживает нажатия на клавиатуре,..
В борьбе с блокировщиками рекламы и автоматизаторами некоторые веб разработчики научились создавать такую верстку, что в ней сложно определить простые правила css selector, так как они будут меняться (но не невозможно, например с помощью getBoundingClientRect() к каждому элементу на странице можно определить его координаты (и видимый ли он) и уже по координатам идентифицировать нужный (блокировщики пока не умеют его использовать но автоматизаторам уже не проблема), так же можно поглядывать на текстовое содержимое, например выделяя подписи к элементам формы.
Еще проблема - тайминги. Момент времени можно подобрать с помощью setTimeout, например переставляя его ежесекундно можно постоянно пересчитывать интервал (смотреть текущее время, целевое время и время установки предыдущего интервала, вычислять ошибку в миллисекундах, которую вносит браузер), чтобы в момент икс последний setTimeout выполнился точно в срок. Еще важно, время на сервере может отличаться от времени на клиенте, точное можно попытаться определить из заголовков запросов к серверу XMLHttpRequest.getResponseHeader() к не статичным файлам, но это конечно не дает гарантии. Плюс можно попытаться вычислить ту половину пинга, которое сетевой пакет тратит чтобы перейти от клиента к серверу, плюс поправка на скорость работы самого браузера (экспериментами, в т.ч. с теми же запросами, на которых время на сервере определяешь). Так же можно проанализировать как отвечает сервер в момент нагрузки.
Работа творческая, и без возможности провести управляемый и повторяемый эксперимент, почти обречена на провал (точнее твой автоматизатор ничем не будет выделяться по сравнению с другими)
p.s. а потом осознать, к примеру, что декларируемые и фактические правила получения скидки у владельца сервиса - отличаются.