Как манипулировать сайтами Javascript в Perl - PullRequest
3 голосов
/ 12 июля 2011

Меня попросили автоматизировать регистрацию в веб-приложении (которое, как я предполагаю, является тем, которое запускает много скриптов .aspx и .js), которое в настоящее время может работать только в IE.Сейчас я программирую на Perl и пытался использовать Win32 :: IE :: Mechanize для запуска браузера IE и входа в систему. Я попытался извлечь все формы из веб-приложения и, предоставив информацию о пользователях, заполнитьобязательные формы, но именно здесь возникает проблема, когда я пытаюсь запустить подпрограмму, формы не появляются ......

Итак, я перешел в WWW :: Mechanize и использовал подпрограмму post (из LWP:: UserAgent), который решил проблему по большей части.Теперь я столкнулся с проблемой в ответе, с сервера, я получаю этот скрипт в качестве содержимого ответа, и я не знаю, что с ним делать.

Итак, мой вопрос: Используя Perl, как я могу манипулировать функциями Javascript на веб-сайте?Будет ли это даже правильным решением проблемы?

Я открыт для написания этого и на других языках программирования.Заранее спасибо за помощь!(Чтобы я мог полностью войти в веб-приложение)

Обновление : содержание ответа:

 var msgTimerID;

 var strForceLogOff = "false";

 function WindowOnLoad(){

    if ("false" == "true" && "false" == "false") 
        MerlinSystemMsg("",64);

    if ("false"=="true") 
        msgTimerID = window.setInterval("MerlinSystemMsg(10095,64)", 300000,'javascript');

 }

 function MyShowModal(){

     showModalDialog("", window, strFeatures);}

 function clearMsgInterval(){

    window.clearInterval(msgTimerID);

 }

 function WindowOnUnLoad(){

     if(top.frames(0).document.getElementById("OPMODE").value =="LOGOFF"){

         strFeatures = "width=1,height=1,left=1000,top=1000,toolbar=no,scrollbars=no,menubar=no,location=no,directories=no,status=yes,resizable=1";

         window.open("ForceLogOff.aspx","forcelogout",strFeatures);

     }

 }

 window.onbeforeunload = WindowOnUnLoad;

 window.onload = WindowOnLoad;

Существует также этот заголовок кадра, который имеет код:

FRAME TITLE ="Service Desk Express Navigator" SRC = "options_nailogo.aspx" MARGINWIDTH = 0 MARGINHEIGHT = 0 NORESIZE прокрутка = нет

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Попытка эмулировать браузер с полностью работающим движком JS будет очень сложной задачей.Вместо этого я бы посоветовал вам просто подражать реальному взаимодействию с веб-сайтом и не заботиться о том, что HTML / JS на самом деле отправляется обратно.Ваш серверный код не заботится о том, как происходит HTTP-отправка, только о том, что они делают.По общему признанию, это более хрупко, если формы сильно меняются, но, по крайней мере, вы не пытаетесь реализовать полноценный браузер.

Так что посмотрите на модули вроде LWP :: UserAgen t, HTTP :: Запрос и HTTP :: Ответ .

0 голосов
/ 12 июля 2011

Я копирую и вставляю свой ответ на ваш другой дублирующий вопрос здесь (вам следует рассмотреть возможность удаления одного из них?)

Этот контент является источником сайта:)

Как WWW :: Mechanize работает с FRAME SRC в качестве ссылки:

Обратите внимание, чтотеги анализируются из HTML и обрабатываются как ссылки, поэтому этот метод работает с ними.

Вы можете использовать follow_link для этой ссылки.

Что касаетсяИмея дело с Javascript, есть поддержка надстройки Firefox под названием MozRepl , которую вы можете использовать вместе с WWW :: Mechanize :: Firefox , которую я использовал в прошлом для вызоваКод Javascript при сканировании страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...