Существует ли эквивалент инструмента *expect* Дона Либеса для создания сценариев взаимодействия с веб-страницами?
-
03-07-2019 - |
Вопрос
В старые добрые времена интерактивных консольных приложений Дон Либес создал инструмент под названием Ожидать, что позволило вам писать сценарии Tcl, которые взаимодействовали бы с этими приложениями так же, как это сделал бы пользователь.Expect имел два огромных преимущества:
Можно было запрограммировать взаимодействия, которые в противном случае пришлось бы утомительно повторять вручную.Классическим примером был ад коммутируемого доступа в Интернет (во времена, когда еще не было PPP).
Можно было писать сценарии для программного тестирования собственных интерактивных приложений в рамках пакета регрессии.
Сегодня большинство интерактивных приложений находятся в Интернете, а не на консоли.Отсюда мой вопрос:Существует ли какой-либо инструмент, который обеспечивает возможность программного взаимодействия с веб-страницами и веб-формами, так же, как Expect предоставляет возможность программного взаимодействия с консольными приложениями?
(Самое близкое, что я знаю, это Куриная лапка.)
Решение
Возможно, вы ищете Селен
Другие советы
я использовал Селен RC в сочетании с Python для программного управления взаимодействием с веб-страницами.Это позволило мне написать довольно обширные пользовательские тесты, в которых управляются формы и вводимые данные, а также измеряются их результаты.
Проверьте Селен IDE в Firefox (как упоминалось выше).Он позволяет записывать тесты в браузере и воспроизводить их либо с помощью самой IDE, либо с помощью приложения Remote Control.
Перл Механизировать работает очень хорошо для этой конкретной проблемы.
HTTPS и некоторые проблемы аутентификации иногда бывают непростыми.В будущем я опубликую пару вопросов об этом.
В прошлой жизни я проделал массу работы над Expect и всегда считал книгу Expect Дона Либеса одной из лучших написанных и самых поучительных технических книг, которые я когда-либо видел.
Без сомнений, я бы сказал, что библиотека Perl WWW::Mechanize — это то, что вам нужно.Выше я отмечаю, что у вас возникли проблемы с поиском документации.Для этого есть хорошая документация!Найдите дистрибутив модуля на search.cpan.org и посмотрите, что в него входит.Есть FAQ, кулинарная книга с примерами и т.д.Плюс я всегда мог получить помощь в Интернете.Если вы не можете получить его здесь, попробуйте использовать.perl.org или perlmonks.org.Автор WWW::Mechanize Энди Лестер присутствует при переполнении стека.(Он также дружелюбный и отзывчивый парень.)
Я считаю, что в WWW::Mechanize также есть программа, аналогичная программе автоожидания Expect:вы настраиваете прокси-процесс, запускающий эту программу в качестве сервера, указываете на него в своем браузере как на прокси, выполняете действия, которые хотите автоматизировать, а затем прокси-программа предоставляет вам программу WWW::Mechanize, которую вы можете использовать в качестве основы. для вашего проекта.(Если он работает как autoexpect, вам наверняка захочется внести изменения оттуда.)
Как упоминалось выше, WWW::Mechanize является браузер (точнее, веб-клиент или http-клиент), который бывает программируемым.В последний раз, когда я заглядывал, там даже велась работа над поддержкой JavaScript.
Помимо Selenium, если вы работаете с Ruby/Rails, есть Вебрат.