Как я могу использовать Perl для очистки веб-сайта, который раскрывает свое содержимое с помощью JavaScript?

Мне нужно написать Perl-скрипт для очистки веб-сайта. Веб-сайт можно очистить только с помощью JavaScript, а пользователь работает в Windows.

Я каким-то образом использовал Win32::IE::Mechanize на своей рабочей машине, что имеет IE6, но потом я перешел на свой нетбук с IE8 и не могу даже получить простую страницу.

Обновлен ли Win32::IE::Mechanize до последних версий IE?

Но, что более важно, учитывая недавнюю машину с WinXP, какой самый быстрый и простой способ очистить сайт, который раскрывает свое содержимое только через JavaScript?


person AmbroseChapel    schedule 24.04.2010    source источник
comment
Возможно, вас заинтересует обсуждение Майкла Шверна Selenium в ситуации тестирования: use.perl. org/~schwern/journal/39088.   -  person FMc    schedule 24.04.2010


Ответы (4)


WWW::Selenium.

  • Это позволяет вам указать, какой браузер использовать (IE и Firefox поддерживаются с самого начала)
  • Он поддерживает доступ к элементам через элементы xpath, идентификаторы таблиц, текст (соответствие регулярным выражениям!) и URL-адреса.
  • Он предоставляет швейцарский армейский нож вариантов взаимодействия с пользователем, предоставляя вам гибкость в отношении того, как вы хотите имитировать просмотр конечных пользователей.

Вам потребуется загрузить Selenium Remote Control и запустить его в фоновом режиме, чтобы модуль Работа.

Это не лучший вариант, если время загрузки вашей страницы непредсказуемо.

person Zaid    schedule 24.04.2010
comment
Это, конечно, выглядит хорошо, но установка части RC не доставит удовольствия моим географически удаленным, несколько невежественным клиентам... - person AmbroseChapel; 25.04.2010
comment
@AmbroseChapel: это не столько установка, сколько загрузка. Как только файл будет на месте, запустите его через java -jar selenium-server.jar в фоновом режиме. - person Zaid; 25.04.2010

Взгляните на Win32::Watir. Это новый модуль, явно поддерживающий IE 6, 7 и 8.

person rjh    schedule 24.04.2010
comment
Это здорово выглядит. Но я даже не могу запустить его. Он терпит неудачу в new() и дает мне сообщение об ошибке. Нечетное количество элементов в назначении хэша в строке C:\Perl\site\lib\Win32\Watir.pm 101 Не удается найти метод объекта _startIE с помощью видимого пакета в строке C:\Perl\site\lib\Win32\Watir.pm 108 Есть ли совет? - person AmbroseChapel; 25.04.2010
comment
Ой, подождите, это документация — там написано Watir::new вместо Watir-›new — теперь она работает. Хотя это не придало мне уверенности... - person AmbroseChapel; 25.04.2010
comment
Я не сделал, но я представил ошибку. Я должен вернуться и заняться документацией, вы правы. - person AmbroseChapel; 26.04.2010

Я не вижу никаких упоминаний о WWW::Mechanize, поэтому я поднимите его только для полноты. Selenium также становится очень популярным и может использоваться во многих сценариях тестирования.

person Ether    schedule 24.04.2010
comment
WWW::Mechanize не работает с JavaScript, поэтому я и задаю этот вопрос. - person AmbroseChapel; 25.04.2010
comment
@AmbroseChapel: WWW::Mechanize::Firefox поддерживает JavaScript. - person Zaid; 25.04.2010

WWW::Scripter и его: :Plugin::Javascript может вам помочь.

person muhmuhten    schedule 25.04.2010