Как установить значение с помощью WWW::Mechanize::Firefox, когда есть три тега <input> с одинаковым именем?

Я использую WWW::Mechanize::Firefox автоматизировать взаимодействие с веб-страницей. Eternalhing работает хорошо, пока не дойду до страницы, где я хочу, чтобы скрипт вводил определенное значение в <input...> коробка. К сожалению, на этой странице три <input... коробки с одинаковым именем:

<input name="search_term" value="" class="inputbox" type="text">

Строка в скрипте perl, используемая для заполнения значения:

$mech -> field('search_term', $value_search);

Поскольку имя search_term не идентифицирует ровно одно <input> tag, скрипт останавливается с этим сообщением об ошибке:

3 elements found for input with name 'search_term' ....

Итак, есть ли способ указать, какой из трех <input> Я хочу заполнить?

редактировать

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

$mech -> field('search_term', $value_search, 1);

все еще останавливается с тем же сообщением об ошибке, что и без явной установки третьего параметра.

1 ответ

Решение

Мне удалось заставить его работать с eval_in_page:

$mech -> eval_in_page(
  'document.getElementsByName("search_term")[0].value = "' . $value_search . '"'
);
Другие вопросы по тегам