Как автоматизировать задачу просмотра?

В течение нескольких недель я пытаюсь автоматизировать задачу просмотра. Задача проста: войти, щелкнуть ссылки, ввести переменную и отправить, выйти из системы. Мне нужно создать веб-сайт, который делает это (своего рода более простой интерфейс). Помните, что веб-сайт использует сервлеты, и у меня нет доступа к кодам веб-сайтов. Сначала я попробовал CURL, но, поскольку на странице были некоторые элементы Ajax, curl не смог показать этот контент. Я пробовал .NET Webdriver, JUnit, Selenium и т. Д. Но все не удалось отрисовать элементы ajax. Я пробовал perl и python Mechanize, хотя perl не работал, мне удалось получить динамический контент с помощью python. Проблема не в том, что у меня есть ссылки, которые являются исполнениями Javascript, они начинаются с Javascript: и я не думаю, что могу вызывать функции с помощью Mechanize. Кто-нибудь знает, возможна ли вообще эта задача?


person user1470618    schedule 17.07.2012    source источник
comment
Вы пробовали использовать селен waitFors, чтобы Ajax работал хорошо? Как именно он «потерпел неудачу»?   -  person Silas Ray    schedule 18.07.2012
comment
Selenium не удалось войти в систему. Я использовал оболочку .NET для selenium и не смог пройти через экран входа в систему. У меня возникла ошибка "Вы должны ввести пароль". (да, имена полей формы были правильными)   -  person user1470618    schedule 18.07.2012
comment
FAQ по механизации содержит обходные пути отсутствия поддержки Javascript и перечисляет многие модули с поддержкой Javascript.   -  person daxim    schedule 18.07.2012
comment
Я уже все перепробовал и потерпел неудачу.   -  person user1470618    schedule 18.07.2012


Ответы (2)


Модуль Perl WWW::Mechanize - это самый популярный способ автоматизации задач просмотра веб-страниц, таких как загрузка, выгрузка и т. Д. отправка форм, аутентификация, простой просмотр, очистка экрана и т. д. и т. д.

Если веб-сайт содержит Javascript, популярный модуль Perl для их обработки должен использовать _2 _.

Пока что "почти" любой веб-сайт, включая такие технологии, как JavaScript и Ajax, и использующий безопасность SSL или доступ через прокси-сервер, может обрабатываться комбинацией методов модуля Perl, принадлежащих _ 3_ и WWW::Mechanize или WWW::Mechanize::Firefox. Множество примеров доступно в сети.

person AnBisw    schedule 18.07.2012
comment
Насколько я понимаю, WWW :: Mechanize :: Firefox требует MozlRepl, который является расширением firefox и не имеет ничего общего с моей средой командной строки. - person user1470618; 18.07.2012
comment
Какую среду командной строки вы используете? Вы также можете использовать WWW :: Scripter для обработки javascript. - person AnBisw; 18.07.2012
comment
Спасибо, Annjawn, Just linux, дело в том, что я пытаюсь создать веб-сайт, который принимает учетные данные и будет запускать сценарий для автоматизации некоторых задач, поэтому все задачи должны выполняться в сценарии, я также посмотрю на Scripter. Но я как бы прихожу к выводу, что, несмотря на то, что все говорят, обработка сложных веб-сайтов с помощью скриптов, если возможно, чрезвычайно сложна и зависит от модуля. - person user1470618; 19.07.2012
comment
Да, это правда. Существует несколько способов создания динамических объектов на веб-страницах, и каждый из них имеет свои собственные свойства, обработка всех этих типов с использованием стандартного модуля затруднена. Есть множество других модулей, которые вы можете посмотреть, но почти для всех из них требуется плагин для веб-браузера. - person AnBisw; 19.07.2012

Пример использования casperjs:

var casper = require('casper').create({
   verbose: true,
   logLevel: 'debug'
});
casper.start(
   'http://example.com',
   function() {
       this.evaluate( function() {
           return $('#someElementId div').length; // This runs as if it was on the page
       });
       this.fill(
           '#formId',
           {
               email: '[email protected]',
               password: 'password123'
           },
           true
       ); // This submits login form
   }
);

Casperjs хранит файлы cookie, поэтому запросы к более глубоким страницам не завершатся ошибкой.

Подробнее об отправке форм см. fill ().

См. оценить () для запуска js, как если бы он был запущен на странице, которую вы тестируете.

Если вы хотите протестировать действия AJAX - не проблема. Они будут работать, как если бы страница была запущена в браузере, вы можете увидеть результаты в DOM. Вы можете запустить их вручную с помощью метода Assessment ().

person Sergey Eremin    schedule 17.07.2012
comment
ООООО куча случайных ссылок! - любая дополнительная информация будет полезна. - person rlemon; 18.07.2012
comment
Selenium WebDriver не работал с элементами Ajax. - person user1470618; 18.07.2012
comment
Кроме того, вы уверены, что я смогу запустить javascript на стороне сервера с помощью Phantom? - person user1470618; 18.07.2012