В конце формы есть кнопка на веб-сайте, которую я не могу щелкнуть с помощью WWW :: Mechanize. Вот это немного HTML, относящиеся к этой кнопке:WWW :: Механизировать: как нажать кнопку, основанную на ее номере в форме
<input type="submit" class="saveButton" value="Login">
Когда я print $mech->find_all_inputs();
, я получаю это вернуть:
HTML::Form::TextInput=HASH(0x7f8f52cdc450)
HTML::Form::TextInput=HASH(0x7f8f5302b488)
HTML::Form::SubmitInput=HASH(0x7f8f52cdc108)
Третий один я хочу нажать кнопку. Я не совсем уверен, как нажать эту кнопку, хотя я ее нашел. Я попробовал click(field(n => 3))
, я попытался присвоить переменную $ submit find_all_inputs(3)
, затем click($submit);
, и не важно, что эта кнопка не нажата.
Может ли кто-нибудь указать мне, как нажать эту неуловимую кнопку?
Редактировать (после того, как вопрос ответил)
Допрос форму HTML нашел, что я был на самом деле ввести пароль для входа в «забыл пароль» поле формы. Почему это поле не подходит для $mech->find_all_inputs()
, я не знаю, так как «Логин» был. В любом случае, нажатие кнопки приведет меня к следующей странице. Благодаря!
Кажется, что 'click' работает, однако, я не перехожу к следующей странице (кнопка, о которой идет речь, является кнопкой входа в систему, поэтому щелчок по ней должен привести к другому URL-адресу, не так ли? Но '$ ua -> uri;' до и после нажатия кнопки). Я попробовал 'my $ response = $ ua -> click();' и 'print $ response', который возвратил' HTML :: Form :: SubmitInput = HASH (0x7f8f52cdc108) ', поэтому я думаю, что' click' работал. –
У вашего объекта Mechanize есть куки? считать 'my $ mech = WWW :: Mechanize-> new ( cookie_jar => HTTP :: Cookies-> new (file =>" $ ENV {HOME} /. Cookies.txt ") );' для получения файлов cookie. Кажется крайне маловероятным, что вы могли бы войти без него. – bytepusher
@bytepusher: Конструктор 'WWW :: Mechanize' по умолчанию ведет себя так, как будто вы передали параметр' cookie_jar => {} ', который создает объект' HTTP :: Cookies' в памяти. – Borodin