何週間もの間、ブラウジング タスクを自動化しようとしています。タスクは簡単です:ログインし、リンクをクリックし、変数を入力して送信し、ログアウトします。これを行うWebサイトを作成する必要があります(より単純なインターフェースの並べ替え) Webサイトがサーブレットを使用しており、Webサイトコードにアクセスできないことに注意してください。最初に CURL を試してみたのですが、ページ内に Ajax 要素がいくつかあったため、curl ではその内容を表示できませんでした。.NET Webdriver、JUnit、Selenium などを試しましたが、すべて ajax 要素のレンダリングに失敗しました。perl と python mechanize を試しましたが、perl は機能しませんでしたが、python で動的コンテンツを取得できました。問題は、Javascript で始まる Javascript 実行のリンクがあることではなく、Mechanize で関数を呼び出すことができないと思います。このタスクが可能かどうかは誰にもわかりませんか?
2 に答える
Perl モジュールWWW::Mechanize
は、ダウンロード、アップロード、フォーム送信、認証、単純なブラウジング、スクリーン スクレイピングなどの Web ブラウジング タスクを自動化する最も一般的な方法です。
Web サイトに Javascript が含まれている場合、それらを処理する一般的な Perl モジュールは を使用することWWW::Mechanize::Firefox
です。
これまでのところ、JavaScript や Ajax などの技術や SSL セキュリティの使用、プロキシ サーバー経由のアクセスなど、「ほぼ」あらゆる種類の Web サイトを、 および または に属する Perl モジュール メソッドの組み合わせで処理LWP::UserAgent
できWWW::Mechanize
ますWWW::Mechanize::Firefox
。ウェブ上で利用可能な例の負荷。
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() を使用して手動で起動できます。