Есть ли эквивалент * ожидаемого * инструмента Дон Либеса для взаимодействия сценариев с веб-страницами? - PullRequest
7 голосов
/ 04 марта 2009

В старые добрые времена приложений для интерактивных консолей Дон Либес создал инструмент под названием Expect , который позволял вам писать сценарии Tcl, взаимодействующие с этими приложениями, так же, как и пользователь. У Expect было два потрясающих преимущества:

  • Можно было написать сценарий взаимодействия, который в противном случае пришлось бы повторять вручную, утомительно. Классическим примером был ад по коммутируемому доступу в Интернет (со времен до PPP).

  • Можно было написать сценарии для тестирования собственных интерактивных приложений программным способом как часть набора регрессии.

Сегодня большинство интерактивных приложений находятся в Интернете, а не на консоли. Отсюда мой вопрос: существует ли какой-либо инструмент, который предоставляет возможность программно взаимодействовать с веб-страницами и веб-формами, так же как Expect предоставляет возможность программно взаимодействовать с консольными приложениями?

(Самая близкая вещь, о которой я знаю, это Куриная лапка .)

Ответы [ 5 ]

8 голосов
/ 04 марта 2009

Возможно, вы ищете Селен

5 голосов
/ 03 апреля 2009

В прошлой жизни я проделал тонну работы с «Ожиданием» и всегда думал, что книга «Ожидание» Дона Либеса была одной из самых написанных и самых поучительных технических книг, которые я когда-либо видел.

Руки вниз Я бы сказал, что библиотека Perl WWW :: Mechanize - это то, что вам нужно. Я отмечаю выше, что у вас были проблемы с поиском документации. Для этого есть хорошая документация! Посмотрите дистрибутив модуля на search.cpan.org и посмотрите, что все в комплекте с ним. Есть часто задаваемые вопросы, поваренная книга с примерами и т. Д. Кроме того, я всегда мог получить помощь в Интернете. Если вы не можете получить его здесь, попробуйте использовать use.perl.org или perlmonks.org. WWW :: Автор Mechanize, Энди Лестер, присутствует на переполнении стека . (Он также дружелюбный и обходительный парень.)

Я полагаю, что WWW :: Mechanize также имеет программу, аналогичную программе Autopect Expect: вы настраиваете прокси-процесс, запускающий эту программу в качестве сервера, указываете браузер в качестве прокси-сервера, выполняете действия, которые вы хотите автоматизировать , а затем прокси-программа предоставляет вам программу WWW :: Mechanize для использования в качестве основы для вашего проекта. (Если он работает как autoexpect, вы, безусловно, захотите внести в него изменения.)

Как уже упоминалось выше, WWW :: Mechanize - это браузер (точнее, веб-клиент или http-клиент), который может быть программируемым. В прошлый раз, когда я смотрел, была даже работа над тем, чтобы он поддерживал JavaScript.

5 голосов
/ 04 марта 2009

Perl Механизация очень хорошо подходит для этой проблемы.

HTTPS и некоторые проблемы с аутентификацией иногда бывают сложными. Я буду публиковать пару вопросов о них в будущем.

5 голосов
/ 04 марта 2009

Я использовал Selenium RC в сочетании с Python для программного взаимодействия веб-страниц. Это позволило мне написать довольно обширные пользовательские тесты, в которых используются формы и входные данные и измеряются их результаты.

Ознакомьтесь с IDE Selenium в Firefox (как упоминалось выше). Он позволяет записывать тесты в браузере и воспроизводить их либо с помощью самой IDE, либо с помощью приложения Remote Control.

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

В дополнение к Selenium, если вы занимаетесь Ruby / Rails, есть Webrat .

...