フォームを送信して CasperJS にログインするにはどうすればよいですか。私はグーグルを検索しましたが、それについての良い例は見つかりませんでした。
36641 次
2 に答える
52
Casper fill()関数を使用する必要があります。
以下は、Facebook にログインし、ログイン後に自分の名前を出力する例です。ユーザー名とパスワードを入力する必要があることに注意してください。
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',
pageSettings: {
loadImages: false, // The WebPage instance used by Casper will
loadPlugins: false, // use these settings
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'
}
});
// print out all the messages in the headless browser context
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
});
// print out all the messages in the headless browser context
casper.on("page.error", function(msg, trace) {
this.echo("Page Error: " + msg, "ERROR");
});
var url = 'http://www.facebook.com/';
casper.start(url, function() {
console.log("page loaded");
this.test.assertExists('form#login_form', 'form is found');
this.fill('form#login_form', {
email: '**<put your email here>**',
pass: '**<put your password here>**'
}, true);
});
casper.thenEvaluate(function(){
console.log("Page Title " + document.title);
console.log("Your name is " + document.querySelector('.headerTinymanName').textContent );
});
casper.run();
于 2012-11-14T10:05:55.773 に答える
7
Ngo Hung のコードを少し変更したバージョンを次に示します。userAgent の割り当てと同様に、ユーザー名のセレクターはオフでした。
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
pageSettings: {
loadImages: false, // The WebPage instance used by Casper will
loadPlugins: false // use these settings
}
});
// print out all the messages in the headless browser context
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
});
// print out all the messages in the headless browser context
casper.on("page.error", function(msg, trace) {
this.echo("Page Error: " + msg, "ERROR");
});
var url = 'http://www.facebook.com/';
casper.start(url, function() {
console.log("page loaded");
this.test.assertExists('form#login_form', 'form is found');
this.fill('form#login_form', {
email: '**<put your email here>**',
pass: '**<put your password here>**'
}, true);
});
casper.thenEvaluate(function(){
console.log("Page Title " + document.title);
console.log("Your name is " + document.querySelector(".fbxWelcomeBoxName").innerHTML);
});
casper.run();
更新:大量のテストを計画している場合は、自分のサイトを使用するか、少なくとも facebook.com を使用しないことを他の人に勧めます。Facebook は、私が何度もログインしようとしたことを認識して、私にメールを送り始め、SMS でアカウントを確認するように要求しました。
于 2013-06-03T21:46:14.297 に答える