SelectList с механизацией в Ruby - PullRequest
4 голосов
/ 26 марта 2012

Я пытаюсь установить значение списка выбора, используя Mechanize с Ruby.Я могу перейти на страницу со списком выбора, получить форму с помощью метода .form и найти список выбора.

report_form =page.form('form1')
pp report_form.field_with(:name => "report_type")

Правильно возвращает нужный объект.

Однако яЯ все еще не могу установить значение этого поля!Я пытался:

report_form.field_with(:name => "report_type").options.first.select
report_form.field_with(:name => "report_type").options[1].select
report_form.field_with(:name => "report_type").value = "Foo"

Но когда я тогда делаю:

pp report_form.field_with(:name => "report_type")

Поле значения все еще пусто.

Есть что-то, что я пропускаю?Подсказки?Трюки?Лучше механизировать документы, чем те, которые живут по http://mechanize.rubyforge.org?

Спасибо!

Редактировать: Соответствующий HTML: Соответствующий HTML:

<TD>
<select id="report_type" name="report_type">
    <option value="Foo1">Opt 1</option>
    <option value="Foo2">Opt 2</option>
    <option value="Foo3">Opt 3</option>
</select></TD>

Ответы [ 5 ]

6 голосов
/ 26 марта 2012

Попробуйте это

report_form.field_with(:name => "report_type").option_with(:value => "Foo").click
# now report_form.field_With(:name => "report_type").value should bee "Foo"

(через 1 , 2 )

2 голосов
/ 27 марта 2012

Обычно достаточно сделать:

report_form["report_type"] = "Foo"
1 голос
/ 20 февраля 2013

Я столкнулся с той же проблемой, у меня тоже ничего не работает, но я хотел бы уточнить, что я могу установить значение на что угодно, кроме выбора опций.

    report_form.field_with(:name => "report_type").value = "Foo1"
    report_form["report_type"]
    => "Foo1"
    report_form.field_with(:name => "report_type").value
    => "Foo1"
    report_form.field_with(:name => "report_type")
    => [selectlist:0x7c08ada type:  name: "report_type" value: []]

после отправки формы, выбор обрабатывается как пустой, однако, если я делаю

    report_form.field_with(:name => "report_type").value = "anything not in the options"
    report_form.field_with(:name => "report_type")
    => [selectlist:0x7c08ada type:  name: "report_type" value: ["anything not in the options"]]
0 голосов
/ 14 мая 2013

На самом деле это оказалось ошибкой в ​​самоцвете Mechanize.Убедитесь, что вы используете v 0.6.0 или новее.

0 голосов
/ 20 марта 2013

Foo нет в списке выбора, я думаю, если вы измените его на Foo1 (или другие), он должен работать !?

...