使用WWW::Mechanize::Firefox
选择项目时,是否可以遍历多个具有相同名称的选择器?
我使用以下代码:
my $un = $mech->selector('input.normal', single => 1);
回复是2 elements found for CSS selector
。有没有办法使用XPath或更好的方法,还是可以循环结果?
加分点:输入输入即使它不是表单元素(即使用JavaScript)
答案 0 :(得分:2)
使用single
选项,您已指定应该只有一个与选择器匹配的元素。这就是为什么在找到两个匹配项时会收到错误消息。
该方法将返回匹配列表,您可以使用one => 1
代替single => 1
,如果没有至少一个匹配则会抛出van错误,或者您可以离开完全选择,当它只返回它找到的所有内容时。
my @inputs = $mech->selector('input.normal')
将使用匹配的@inputs
元素列表填充数组<input>
,无论有多少元素都存在。
答案 1 :(得分:1)
模块文档包含以下示例:
my $link = $mech->xpath('//a[id="clickme"]', one => 1);
# croaks if there is no link or more than one link found
my @para = $mech->xpath('//p');
# Collects all paragraphs