Как может я получать доступ к формам без имени или идентификатора с WWW Perl:: Механизировать?

У меня есть проблемы с моей программой Perl. Эта программа входит в систему определенной веб-страницы и заполняет текстовую область для сообщения и поле ввода для номеров мобильных телефонов. При нажатии на кнопку 'Send' сообщение будет отправлено в конкретное количество. Я уже заставил это работать на отправку сообщений. Но проблема, я не могу заставить ее работать на получение сообщений/ответов. Я использую WWW:: Механизируйте модуль в Perl. Вот часть моего кода (для получения msgs):

$username = 'suezy';
$password = '123';
$url = 'http://..sample.cgi';

# ...

$mech->credentials($username, $password);  
$mech->get($url);

$mech->submit(); 

Моя проблема, формы не показывает имен. В этой форме существует две кнопки, но я не могу выбрать, какая кнопка нажать, с тех пор нет никакого указанного имени, и идентификаторы содержит пространство (например, форма называют ='receive сообщение'). Я должен нажать на вторую кнопку, 'Получить'.

Вопрос, как я смогу получить доступ к использованию форм и кнопок, механизируют модуль, не используя имена?

7
задан brian d foy 22 February 2010 в 00:26
поделиться

4 ответа

Учитывая, что в вашей форме всего две кнопки, предложение ysth должно быть легко реализовано.

use strict;
use warnings;
use WWW::Mechanize;

my $username = "suezy";
my $password = "123";
my $url = 'http://.../sample.cgi';
my $mech = WWW::Mechanize->new();

$mech->get($url);
$mech->credentials($username,$password);

А затем:

$mech->click_button({number => 1});       # if the 'Receive' button is 1

Или:

$mech->click_button({number => 2});       # if the 'Receive' button is 2

Вам более чем достаточно метода проб и ошибок, чтобы определить, на какую кнопку вы нажимаете.

РЕДАКТИРОВАТЬ

Я предполагаю, что соответствующая форма уже выбрана. Если нет:

$mech->form_number($formNumber);

, где $ formNumber - номер формы на рассматриваемой странице.

3
ответ дан 6 December 2019 в 21:13
поделиться

Вы пробовали использовать HTTP Recorder ?
Посмотрите документацию и попробуйте посмотрите, дает ли это разумный результат для вас.

4
ответ дан 6 December 2019 в 21:13
поделиться

Вы можете передать аргумент form_number методу submit_form.

Или вызовите метод form_number, чтобы указать, какая форма будет использоваться в последующих вызовах click или field.

4
ответ дан 6 December 2019 в 21:13
поделиться

$ mech-> form_with_fields ('username');

выберет форму, содержащую поле с именем username. hth

1
ответ дан 6 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: