Вы действительно пробовали код, который вы разместили здесь?
Ну, у меня есть веб-сайт с внутренней системой обмена сообщениями, с двумя текстовыми полями и одним текстовым пространством.
мой исходный код образца:
@page = @agent.get "thewebsiteItold"
form = @page.form_with(:id => 'form')
textarea_values = "value1\nvalue2"
form['to'] = "username"
form['subject'] = "somesubject"
form['text'] = textarea_values
button = form.button_with(:name => "send")
@agent.click_button button
Хотя форма имела этот HTML:
<form method="post" action="/somethingyoudontneedtoknow" name="header" id="form">
Запуск моего скрипта вернул эту ошибку:
in 'method_missing': undefined method `id' for #<Mechanize::Form:0x21efb98> (NoMethodError)
Хорошо, я изменил идентификатор для имени и получил еще одну проблему:
in `<main>': undefined method `click_button' for #<Mechanize:0x253f380> (NoMethodError)
Прежде чем вы скажете мне, я дважды проверил содержимое «кнопки», которая содержала правильную кнопку, которую я хотел нажать, чтобы запустить действие формы.
Так что я изменил его соответственно на эти примеры механизации , и код работал хорошо:
form = @page.form_with(:name => 'header')
textarea_values = "value1\nvalue2"
form['to'] = "username"
form['subject'] = "anotherboringsubject"
form['text'] = textarea_values
button = form.button_with(:name => "send")
@agent.submit(form, button)
и, ну, это сработало как ожидалось:
Вывод:
Убедитесь, что ваш исходный код слишком далек от того, что вы нам написали, или версия механизатора совпадает с ссылкой , которую я передал до