2013-07-30 2 views
1

Мне нужно автоматизировать заполнение нескольких форм на стороннем сайте. Сайт написан на JavaScript; протокол HTTPS. Я вижу три способа достижения этого.Автоматическое заполнение веб-формы

  1. Отправьте щелчки мышью и нажмите клавиши в браузере.
  2. Используя сокеты, перехватите все данные (включая заполненную форму), поскольку они отправляются из браузера на сервер; определить формат; реплицировать связь с сервером без использования браузера.
  3. Используйте специальный класс браузера.

Любые комментарии, примеры? Например, какой класс я должен использовать для # 3?

У меня нет опыта веб-программирования за пределами базового HTML. У меня есть обширный опыт работы с C++ (MFC), Java и VB (Excel).

Спасибо!

ОБНОВЛЕНИЕ/Уточнение. В настоящее время мой коллега должен зайти на сайт, ввести его имя/пароль, щелкнуть ссылку - copy-paste - submit - повторить более 9000 раз. Вместо этого мы хотим иметь возможность заполнить электронную таблицу Excel и нажать одну кнопку, которая заполнит все формы на сайте.

ОБНОВЛЕНИЕ # 2. Проблема с HTTPS заключается в том, что «вы не можете нюхать данные, которые являются самым простым способом его тиражирования» - так консенсус здесь? Тогда было бы сложно правильно сформировать запросы сервера, даже с помощью cURL. Я не могу это проверить: это в значительной степени живые данные, и исправление их позже сложно.

Итак, PhantomJS, Selenium ... Как насчет WatiN? И еще раз спасибо за ваши мысли!

+0

_ 'Мне нужно автоматизировать заполнение нескольких форм на стороннем сайте.'_ Автоматизировать, в каком направлении? Чтобы заполнить форму, которую пользователь открыл в веб-браузере или в качестве отдельного клиентского приложения, выполняет веб-запрос в фоновом режиме (без необходимости какого-либо браузера)? –

+0

Последний. Я обновил сообщение. – user1334767

+0

Тогда метод 2. и использование некоторого lib (например, Curl), вероятно, ваш лучший выбор. –

ответ

2

1 или 3: Вы можете использовать PhantomJS для этого. Это не точная отправка кликов или нажатий клавиш; это браузер без браузера WebKit, управляемый JavaScript. В wiki есть несколько полезных примеров автоматизации ввода формы.

2: Если вы знаете структуру формы, вы можете отправить данные формы, как запрос POST через cURL

Пример из Curl Учебник:

<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

+0

На # 2: Я действительно не знаю «структуру формы». Я, очевидно, могу видеть источник формы в браузере, но он есть в JavaScript (чего я не знаю). Кроме того, протокол HTTPS - это важно? – user1334767

+0

Можете ли вы добавить форму HTML к вопросу? Я не уверен, что вы подразумеваете под «это в JavaScript». Используется ли JavaScript для генерации HTML? Или форма подтверждена/представлена ​​через JavaScript? И да, cURL поддерживает HTTPS. –

+0

Единственная проблема с HTTPS заключается в том, что вы не можете обнюхать данные, которые являются самым простым способом его репликации. – doron

2

Делать это в одностороннем порядке (без ведома владельца сайта) может повредиться, если Веб-сайт обновляется (поскольку владелец сайта оставляет за собой право вносить любые изменения, которые они хотят.) Кроме того, вы можете нарушать условия обслуживания Сайта.

Лучшее, что вам нужно сделать, это связаться с владельцем веб-сайта и сообщить им, как вы должны автоматически отправлять данные формы на Веб-сайт. Если они предоставят вам API, вы должны иметь некоторую уверенность в том, что API будет стабильным.

+0

Не вариант. Они слишком жадные. – user1334767

0

Вы должны проверить селен (http://docs.seleniumhq.org/). Вы можете использовать Selenium IDE (я думаю, что он работает только на Firefox) или использовать WebDriver для автоматизации тестов (с помощью java или python).

С помощью IDE вы можете создавать свои собственные макросы, используя «клики» и «нажатия клавиш». Пожалуйста, обратите внимание на условия обслуживания веб-сайта, как вам сказал @doron. С селеном вы можете добавить тайм-ауты, чтобы отправить данные вежливо на сервер.

1

Я рекомендую подход «без браузера» ... если вы используете завиток, как предположил g-makulik, вы могли бы пакетно/скриптировать все. Если это не требует шифрования, простые TCP-сокеты и базовые HTTP-заголовки легко подражать (вы можете наблюдать, как трафик их делает то, что он делает). Если это SSL/TLS, вы все равно можете посмотреть заголовки с помощью инструментов разработчика браузера, а затем использовать OpenSSL или Windows API для обработки шифрования для вас.

1

Попробуйте агента по обеспечению качества (http://qaagent.com). Он работает только в Chrome (на данный момент), и вы можете легко разработать эти автоматизированные действия, о которых вы упомянули, используя javascript и jQuery.

Смежные вопросы