Perl WWW::Mechanize::具有多个元素的Firefox CSS选择器?

Perl WWW::Mechanize::具有多个元素的Firefox CSS选择器?,perl,www-mechanize-firefox,Perl,Www Mechanize Firefox,使用选择项目时,是否可以遍历多个具有相同名称的选择器 我使用以下代码: my $un = $mech->selector('input.normal', single => 1); 响应是为CSS选择器找到的2个元素。有没有一种方法可以使用XPath或更好的方法,或者可以循环遍历结果 优点:即使输入不是表单元素(即使用JavaScript)也要输入。使用single选项,您已经指定应该只有一个元素与选择器匹配。这就是为什么当它找到两个匹配项时会收到错误消息 该方法将返回一个匹配项列

使用选择项目时,是否可以遍历多个具有相同名称的选择器

我使用以下代码:

my $un = $mech->selector('input.normal', single => 1);
响应是为CSS选择器找到的
2个元素。有没有一种方法可以使用XPath或更好的方法,或者可以循环遍历结果


优点:即使输入不是表单元素(即使用JavaScript)也要输入。

使用
single
选项,您已经指定应该只有一个元素与选择器匹配。这就是为什么当它找到两个匹配项时会收到错误消息

该方法将返回一个匹配项列表,您可以使用
one=>1
代替
single=>1
,如果没有至少一个匹配项,它将抛出van error,或者您可以完全忽略该选项,而它只会返回找到的所有内容

my @inputs = $mech->selector('input.normal')

将使用匹配的
元素列表填充数组
@inputs
,无论有多少个元素。

使用
single
选项,您已指定只有一个元素与选择器匹配。这就是为什么当它找到两个匹配项时会收到错误消息

该方法将返回一个匹配项列表,您可以使用
one=>1
代替
single=>1
,如果没有至少一个匹配项,它将抛出van error,或者您可以完全忽略该选项,而它只会返回找到的所有内容

my @inputs = $mech->selector('input.normal')

将使用匹配的
元素列表填充数组
@inputs
,尽管有很多元素。

模块文档包含以下示例:

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

模块文档包含以下示例:

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

我不明白你的“加分”。请解释我不确定如何在输入中输入数据(不是表单),因此无法使用“提交表单”。但是我使用了doc,看到您可以使用->字段([selector],value=>x)。所以红利点数不见了。谢谢你,我感谢你的帮助。现在有一个问题,我无法使用“two=>1”选择页面上的第二个输入…因此我将不得不使用数组,除非你说不同。你仍然误解了选项参数的用途。该方法始终返回与选择器匹配的所有元素。该选项指定根据找到的匹配数引发异常的条件
one
表示必须至少有一个匹配,
single
表示必须只有一个匹配,
可能
不需要匹配或一个匹配:多个匹配是错误的。没有
两个
。要访问第二个
元素,只需在我的示例中使用
$inputs[1]
。好的,谢谢,现在它更有意义了。哈,对于这个例子来说,直接引用更好…我用的是foreachI不理解你的“加分”。请解释我不确定如何在输入中输入数据(不是表单),因此无法使用“提交表单”。但是我使用了doc,看到您可以使用->字段([selector],value=>x)。所以红利点数不见了。谢谢你,我感谢你的帮助。现在有一个问题,我无法使用“two=>1”选择页面上的第二个输入…因此我将不得不使用数组,除非你说不同。你仍然误解了选项参数的用途。该方法始终返回与选择器匹配的所有元素。该选项指定根据找到的匹配数引发异常的条件
one
表示必须至少有一个匹配,
single
表示必须只有一个匹配,
可能
不需要匹配或一个匹配:多个匹配是错误的。没有
两个
。要访问第二个
元素,只需在我的示例中使用
$inputs[1]
。好的,谢谢,现在它更有意义了。哈,对于这个例子来说,直接引用要好得多……我用的是foreach