2

perl スクリプトを使用して、Web サイトとの対話を自動化しようとしています。

モジュール WWW::Mechanize を使用して設計を実現します。しかし、以下のコマンドを使用して、perl スクリプトでボタン クリックを実行できません。

$mech->click( $button [, $x, $y] ) 
$mech->click_button( ... ) 

これは、このボタンがどのフォームにも属さず、名前がないため、perl スクリプトでこのボタンを呼び出したり、見つけたりできないためです。ブラウザと対話するように、perl スクリプトでこのボタンをクリックできるようにするにはどうすればよいですか? ありがとうございました。

<button class="button transactional" id="checkout-now"><span>Check Out Now</span></button>
4

5 に答える 5

1

$mech->post()要素をクリックしたときに JavaScript で何が起こっているのかを見つけるのが難しいという理由だけで十分な場合があります。

したがって、このボタンをクリックしたときにどのリクエストが実行されるかを調べる必要があり (これには Firefox HttpFox を使用できます)、その後、WWW::Mechanize を使用して同じリクエストを作成します。

$mech->post($request_url, Content => {FORM_FIELDS...});
于 2011-11-16T08:46:36.810 に答える
0

このボタンに onclick イベントを追加できます。このような:

<button onlick="alert('hello');">Click Me</button>
于 2011-11-16T05:20:30.450 に答える
0

ブラウザでボタンをクリックすると、JavaScript が実行されるだけです。WWW::Mechanize ではJavaScript をサポートしていないため、これを行うことはできません。

ただし、ボタンがクリックされたときに実行されている JavaScript コードを見つけて、同じことを行う Perl コードを作成することはできます残念ながら、要素に適用される JavaScript イベント ハンドラーを見つけるのが難しい場合があります。優れたFirebugでさえ、要素に関連付けられたすべてのイベント ハンドラーを一覧表示する簡単な方法はないようです。( Eventbug拡張機能は存在しますが、一見するとあまりうまく機能していないように見えます。) Visual Eventブックマークレットも試してみる価値があるかもしれません。

于 2011-11-16T07:48:26.523 に答える
-1

私はあなたが何を求めているのか100%確信していませんが、私はそれにスイングするつもりです。あらゆる種類の双方向性のために、ボタンをフォームの一部にする必要はありません。これは、JavaScriptとHTMLだけで実行できます。

$('#checkout-now').click( function() {
     alert('Hello!');
     //Do other stuff here, regarding the form! (Call Perl scripts etc.)
});

http://jsfiddle.net/fCdxR/1/

それがどのように機能するかの簡単な例!これで問題が解決することを願っています。

于 2011-11-16T05:19:08.483 に答える