1

何週間もの間、ブラウジング タスクを自動化しようとしています。タスクは簡単です:ログインし、リンクをクリックし、変数を入力して送信し、ログアウトします。これを行うWebサイトを作成する必要があります(より単純なインターフェースの並べ替え) Webサイトがサーブレットを使用しており、Webサイトコードにアクセスできないことに注意してください。最初に CURL を試してみたのですが、ページ内に Ajax 要素がいくつかあったため、curl ではその内容を表示できませんでした。.NET Webdriver、JUnit、Selenium などを試しましたが、すべて ajax 要素のレンダリングに失敗しました。perl と python mechanize を試しましたが、perl は機能しませんでしたが、python で動的コンテンツを取得できました。問題は、Javascript で始まる Javascript 実行のリンクがあることではなく、Mechanize で関数を呼び出すことができないと思います。このタスクが可能かどうかは誰にもわかりませんか?

4

2 に答える 2

2

Perl モジュールWWW::Mechanizeは、ダウンロード、アップロード、フォーム送信、認証、単純なブラウジング、スクリーン スクレイピングなどの Web ブラウジング タスクを自動化する最も一般的な方法です。

Web サイトに Javascript が含まれている場合、それらを処理する一般的な Perl モジュールは を使用することWWW::Mechanize::Firefoxです。

これまでのところ、JavaScript や Ajax などの技術や SSL セキュリティの使用、プロキシ サーバー経由のアクセスなど、「ほぼ」あらゆる種類の Web サイトを、 および または に属する Perl モジュール メソッドの組み合わせで処理LWP::UserAgentできWWW::MechanizeますWWW::Mechanize::Firefox。ウェブ上で利用可能な例の負荷。

于 2012-07-18T01:05:17.820 に答える
1

casperjs を使用した例:

var casper = require('casper').create({
   verbose: true,
   logLevel: 'debug'
});
casper.start(
   'http://example.com',
   function() {
       this.evaluate( function() {
           return $('#someElementId div').length; // This runs as if it was on the page
       });
       this.fill(
           '#formId',
           {
               email: 'username@example.com',
               password: 'password123'
           },
           true
       ); // This submits login form
   }
);

Casperjs は Cookie を保存するため、より深いページへのリクエストは失敗しません。

フォーム送信の詳細については、fill () を参照してください。

テストしているページで実行されたかのように js を実行するには、evaluate () を参照してください。

AJAX アクションをテストしたい場合 - 問題ありません。ページがブラウザーで実行されているかのように実行され、DOM で結果を確認できます。evaluate() を使用して手動で起動できます。

于 2012-07-17T22:36:09.533 に答える