Веб-автоматизация - PullRequest
       4

Веб-автоматизация

1 голос
/ 05 марта 2009

Я разрабатываю интерфейс между старым веб-приложением и другим. Это старое веб-приложение работает нормально, но не существует API для связи.

Есть какой-либо программный способ сказать веб-форму что-то вроде: введите это значение в это поле, это одно в другое и отправьте форму?

ОБНОВЛЕНИЕ: Я ищу что-то вроде этого:

WebAutomation w = new WebAutomation("http://apphost/report");
w.forms[0].input[3].value = 123;
w.forms[0].input[4].value = "hello";
Response r = w.forms[0].submit();
...

Ответы [ 4 ]

3 голосов
/ 05 марта 2009

Можно, но вам нужно смоделировать запрос POST. Поля (текстовые поля, переключатели и т. Д.) Передаются в виде пар ключ-значение обратно на ресурс. Вам необходимо сделать запрос на этот ресурс (какой бы из них ни использовался в действии SUBMIT для тега FORM) и поместить все ваши пары поле-значение в полезную нагрузку POST без запроса. Вот хорошая программа, чтобы увидеть, какие значения передаются: http://www.httpwatch.com Или вы можете использовать Firebug, бесплатное расширение Firefox.

3 голосов
/ 05 марта 2009

Несмотря на пометку на ваш вопрос, ответ будет весьма для конкретного языка. Также будет широкий спектр решений в зависимости от того, насколько сложным является решение, которое вы хотите реализовать, и тем, насколько гибким будет результат, который вы ищете.

С одной стороны, вы можете многое сделать за очень короткий промежуток времени с чем-то вроде механизации Python , но, с другой стороны, вы действительно можете войти в смелость и иметь много контроля путем автоматизации браузера с использованием COM-объекта, такого как SHDocVw (конечно, только для Windows).

Или, как предположил LoveMeSomeCode, вы можете действительно ударить по голове и начать подделывать POST-запросы, но удачи вам в выяснении того, что ожидает сервер, если выполняет какую-либо внешнюю обработку данных формы.

EDIT:

Еще один вариант, если вы ищете что-то, что можно быстро освоить, - это использовать модуль IE AutoIt , который в основном обеспечивает программный интерфейс через экземпляр Интернета. Исследователь (конечно, все это COM). Имейте в виду, что это, вероятно, будет наименее поддерживаемым вариантом, который вы можете выбрать. Я лично использовал это для создания проверочных комплектов автоматизации, которые затем были перенесены в более надежную реализацию C #, где я сам обрабатывал вызовы COM.

3 голосов
/ 05 марта 2009

В .NET: http://watin.sourceforge.net/

В рубине: http://wtr.rubyforge.org/

Кроссплатформенность: http://seleniumhq.org/

2 голосов
/ 06 марта 2009

Модуль Perl WWW :: Mechanize делает именно это. Ваш Пример будет выглядеть примерно так:

use WWW::Mechanize;
my $agent = WWW::Mechanize->new;
$agent->get("http://apphost/report");
my $response = $agent->submit_form(
    with_fields => {
        field_1_name => 123,
        field_2_name => "hello",
    },
);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...