当有三个具有相同名称的<input />标记时,如何使用WWW :: Mechanize :: Firefox设置值?

时间:2015-06-27 08:14:03

标签: perl web-scraping www-mechanize-firefox

我正在使用WWW::Mechanize::Firefox来自动化与网页的某些互动。 Evertyvery工作正常,直到我到达我希望脚本在<input...>框中输入特定值的页面。不幸的是,这个页面有三个<input...个框,名称相同:

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

用于填充值的perl脚本中的行是

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

由于名称​​ search_term 无法正确标识一个<input>标记,因此脚本将停止并显示以下错误消息:

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

那么,有没有办法说明我要填写的三个<input>中的哪一个?

修改

ThisSuitIsBlackNot 指出,根据文档,我应该能够设置第三个参数来指示我引用的多个匹配元素中的哪一个。显然,这第三个参数被忽略,以便

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

仍然停止,并显示相同的错误消息,因为没有明确设置第三个参数。

1 个答案:

答案 0 :(得分:1)

我设法使用eval_in_page

$mech -> eval_in_page(
  'document.getElementsByName("search_term")[0].value = "' . $value_search . '"'
);