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

#javascript #windows #perl #internet-explorer #mechanize

#javascript #Windows #perl #internet-explorer #механизировать

Вопрос:

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

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

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

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

Комментарии:

1. Возможно, вам будет интересно обсуждение Майклом Шверном Selenium в ситуации тестирования: use.perl.org /~schwern/journal/39088 .

Ответ №1:

WWW::Selenium.

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

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

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

Комментарии:

1. Это, безусловно, выглядит неплохо, но установка RC-части не доставит никакого удовольствия моим географически удаленным, несколько невежественным клиентам…

2. @AmbroseChapel: Это не столько установка, сколько загрузка. Как только файл будет на месте, запустите его через java -jar selenium-server.jar в фоновом режиме.

3. Или, в наши дни, Selenium::Chrome (или ::Firefox ), без необходимости в автономном сервере или JRE. (Это может вернуться к Selenium::Remote::Driver ). Гораздо приятнее в использовании, без оговорок.

4. Хотелось бы надеяться, что через двенадцать лет 🙂

Ответ №2:

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

Комментарии:

1. Это выглядит великолепно. Но я даже не могу запустить его. При запуске new () происходит сбой и выдается сообщение об ошибке. «Нечетное количество элементов в присваивании хэша в C:PerlsitelibWin32Watir.pm строка 101 не может найти метод объекта «_startIE» через пакет «visble» в C:PerlsitelibWin32Watir.pm строка 108 » Есть какие-нибудь советы?

2. О, подождите, это документация — там написано Watir::new, когда следовало бы сказать Watir-> new — теперь это работает. Хотя это не вселило в меня уверенности…

3. Я этого не делал, но я отправил ошибку. Я должен вернуться и заняться документацией, вы правы.

Ответ №3:

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

Комментарии:

1. WWW::Mechanize не использует JavaScript, именно поэтому я здесь задаю этот вопрос.

2. @AmbroseChapel: WWW::Mechanize::Firefox поддерживает JavaScript.

Ответ №4:

WWW::Scripter и его ::Plugin:: Javascript, вероятно, могут вам помочь.