Мне нужно автоматизировать заполнение нескольких форм на стороннем сайте. Сайт написан на JavaScript; протокол HTTPS. Я вижу 3 способа сделать это.
Есть комментарии, примеры? Например, какой класс я должен попробовать для # 3?
У меня нет опыта веб-программирования, кроме базового HTML. Я действительно имею большой опыт работы с C ++ (MFC), Java и VB (макросами Excel).
Спасибо!
UPDATE / Осветление. В настоящее время мой коллега должен зайти на сайт, ввести свое имя / пароль, щелкнуть ссылку — копировать-вставить — отправить — повторить более 9000 раз. Вместо этого мы хотим иметь возможность заполнять электронную таблицу Excel и нажимать одну кнопку, которая заполнит все формы на сайте.
ОБНОВЛЕНИЕ № 2. Проблема с HTTPS заключается в том, что «вы не можете прослушать данные, что является самым простым способом их тиражирования» — это консенсус здесь? Тогда было бы трудно правильно формировать запросы к серверу, даже с cURL. Я не могу так много тестировать: это в значительной степени живые данные, и исправить их позже сложно.
Итак, PhantomJS, Selenium … А как насчет WatiN? И еще раз спасибо за ваши мысли!
Выполнение этого в одностороннем порядке (без ведома владельца Сайта) может прерваться при обновлении Сайта (поскольку владелец сайта оставляет за собой право вносить любые изменения, которые он пожелает.) Кроме того, вы можете нарушать условия обслуживания Сайта.
Лучшее, что вы можете сделать, — это связаться с владельцем Веб-сайта и сообщить ему, как вам следует автоматически отправлять данные формы на Веб-сайт. Если они предоставляют вам API, вы должны быть уверены, что API будет стабильным.
1 или 3: вы можете использовать PhantomJS чтобы сделать это. Это не совсем отправка щелчков мыши или нажатия клавиш; это безголовый браузер WebKit, управляемый JavaScript. вики Есть несколько полезных примеров автоматизации ввода формы.
2: Если вы знаете структуру формы, вы можете отправить данные формы в виде запроса POST через завивать
Пример из cURL Tutorial:
<form method="POST" action="junk.cgi">
<input type=text name="birthyear">
<input type=submit name=press value=" OK ">
</form>
Это будет команда cURL:
curl --data "birthyear=1905&press=%20OK%20" http://example.com
Я рекомендую подход «без браузера» … если вы используете curl, как предложил g-makulik, вы можете выполнить пакет или скрипт целиком. Если для этого не требуется шифрование, можно легко имитировать простые сокеты TCP и основные заголовки HTTP (вы можете наблюдать за трафиком, который они выполняют, что он делает). Если это SSL / TLS, вы все равно можете просматривать заголовки с помощью инструментов разработчика браузера, а затем использовать OpenSSL или Windows API для обработки шифрования за вас.
Попробуйте QA Agent (http://qaagent.com). Он работает только в Chrome (на данный момент), и вы можете легко разработать упомянутые вами автоматизированные действия, используя javascript и jQuery.
Вы должны проверить селен (http://docs.seleniumhq.org/). Вы можете использовать Selenium IDE (я думаю, что это работает только в Firefox) или использовать WebDriver для автоматизации тестов (с Java или Python).
С IDE вы можете создавать свои собственные макросы, используя «щелчки» и «нажатия клавиш». Пожалуйста, ознакомьтесь с условиями обслуживания Сайта, как сказал вам @doron. С помощью селена вы можете добавить тайм-ауты для вежливой отправки данных на сервер.