ставить галочки с помощью механизации - PullRequest
2 голосов
/ 30 сентября 2011

У меня есть следующий кусок HTML с этого сайта: http://catalogue.bl.uk/F/NTBK6NCP3LK56BPNU2NJ4FF4MBLIRUNMFX66JLHKBDV1RNCAAB-02920?func=short-0&set_number=151530

<form name="XXX000001" method="GET"><input type="checkbox" name="ckbox"   onclick="javascript:select_record(this.form);" onkeypressed="javascript:select_record(this.form);"></form>

Мне было интересно, могу ли я использовать механизацию, чтобы поставить галочки? Кажется, что эти поля не сформированы с использованием обычного HTML. Я не знаю javascript

Ответы [ 4 ]

2 голосов
/ 30 сентября 2011

Возможно, вам следует проверить WWW :: Selenium , чтобы иметь дело с веб-страницами JavaScript.

WWW::Selenium - это своего рода пульт дистанционного управления для браузеров. Из документации: Selenium Remote Control (SRC) - это инструмент тестирования, который позволяет вам писать автоматические тесты пользовательского интерфейса веб-приложения на любом языке программирования для любого веб-сайта HTTP, используя любой основной браузер с поддержкой JavaScript. SRC предоставляет Selenium Server, который может автоматически запускать / останавливать / контролировать любой поддерживаемый браузер. Он работает с использованием Selenium Core, библиотеки чистого HTML + JS, которая выполняет автоматизированные задачи в JavaScript; сервер Selenium взаимодействует напрямую с браузером с помощью AJAX (XmlHttpRequest).

После того, как вы загрузили и установили сервер Selenium (Java-приложение), вы можете использовать модуль WWW::Seletion для управления сервером, который будет использовать браузеры для взаимодействия со сложными веб-сайтами с поддержкой JavaScript.

С экземпляром класса WWW::Selenium

my $sel = WWW::Selenium->new(
    host => "localhost",
    port => 4444,
    browser => "*iexplore",
    browser_url => "http://www.google.com",
);

Практически любой вид взаимодействия с веб-сайтом становится возможным. Нужно определить locator , чтобы точно определить элемент на странице, чтобы выдать команду (select, click, ...).

Подробную справку вы найдете в документации к модулю.

2 голосов
/ 30 сентября 2011

Полагаю, вы говорите о том, что отправляете информацию обратно на страницу с помощью Mechanize, как если бы человек использовал браузер, чтобы поставить галочки. Самый простой способ сделать это - сначала использовать WireShark для просмотра всего, что происходит, когда вы фактически отправляете форму через веб-браузер (с установленными флажками), а затем имитировать то же поведение при отправке формы с помощью Perl.

1 голос
/ 30 сентября 2011

Поскольку WWW :: Mechanize не говорит на языке javascript, вам нужно либо сделать то, что предложено, и выяснить, что делает javascript, и обойти его обратно, либо вы можете использовать что-то вроде WWW :: Mechanize :: Firefox это позволит вам управлять браузером.

0 голосов
/ 18 января 2012

У меня есть предположение, что, по общему признанию, это не самое элегантное решение, но в духе "gett'r done" вы могли бы попытаться создать сценарий autoit , который бы выполнял за вас некоторые графические взаимодействия. Это довольно аккуратный маленький инструмент. Мне было скучно разыгрывать персонажа в игре, поэтому я создал скрипт autoit для прокачки своего игрока, и мне потребовалось около одного дня, чтобы изучить синтаксис и создать скрипт. Я уверен, что автоматизация веб-страницы займет гораздо больше времени. Просто мысль ...

...