2013-07-14 2 views
0

Я новичок в веб-очищении с помощью Perl, и я пытаюсь отправить страницу, заполнив поля имени пользователя и пароля и нажав кнопку Отправить. Я проверил HTML код кнопки в вопросе, и это выглядит следующим образом:Perl Click Button with WWW :: Mechanize

<input type="submit" class="button formSubmission" value="Sign In"> 

Я читал, что WWW::Mechanize не может справиться с JavaScript, но я не уверен, если код, который я смотрю на это JavaScript, или моя реализация просто неверна. Я пробовал $mech->click_button("Sign In"); беззаботно, но получил ошибку, которой не было такое поле.

Любые идеи?

ответ

3

Ваша кнопка не имеет name атрибут, поэтому я уверен, что нет необходимости нажимать его. Что вам нужно просто представить свои поля к форме:

$mech->submit_form(
    with_fields => { 
     your_username_field => $user, 
     your_password_field => $password, 
     ..... 
    }, 
); 
+0

Это правильно. Спасибо! – aquemini

2

Посмотрите на documentation для метода click_button. В нем перечислены несколько возможных способов поиска кнопки, которую вы хотите щелкнуть. У вашей кнопки нет имени, но оно имеет значение, поэтому

$mech->click_button(value => "Sign In"); 

должен сделать это.

+0

Он возвращает сообщение об ошибке 'Не удается вызвать метод«заголовок»на неопределенное значение в /Library/Perl/5.12/WWW/Mechanize.pm строка 2471'. – aquemini

+0

Это должно означать, что это JS, не так ли? – aquemini

1

Атрибут value<input> не является идентификатором. В случае кнопки submit это только текст на кнопке.

Если вы просто хотите отправить форму, вы можете просто хотеть submit_form.

Если вы хотите нажать кнопку, но эта кнопка не имеет идентификатора name, то вы можете использовать функции click_button. Вы можете указать

$mech->click_button(value => "Sign In");