0

を使用WWW::Mechanize::Firefoxしてアイテムを選択する場合、同じ名前の複数のセレクターを反復処理することはできますか?

私は次のコードを使用します:

my $un = $mech->selector('input.normal', single => 1);

応答は2 elements found for CSS selectorです。XPathまたはより良い方法を使用する方法はありますか、それとも結果をループすることは可能ですか?

ボーナスポイント:フォーム要素に含まれていない(つまりJavaScriptを使用している)場合でも入力を入力する

4

2 に答える 2

2

オプションを使用しsingleて、セレクターに一致する要素が1つだけ存在するように指定しました。そのため、一致するものが2つ見つかると、エラーメッセージが表示されます。

one => 1このメソッドは一致のリストを返します。代わりに使用できますsingle => 1。これにより、一致が1つも存在しない場合にバンエラーがスローされます。または、オプションがすべて返される場合は、オプションを完全に除外できます。見つける。

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

@inputs一致する要素のリストで配列を埋め<input>ますが、多くあります。

于 2013-03-08T09:28:03.590 に答える
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
于 2013-03-08T09:35:00.290 に答える