【CasperJS】ログインする方法メモ

今回やりたかったのはログインが必要なページの取得。
単純にformをsubmitすればいいページとログインボタンをクリックするとjavascriptが動いてごにょごにょやってログイン処理へと遷移するパターンがあるのでそれぞれ実装してみたのでメモしておく。

formをsubmitするパターン

ログイン画面

<form action="/login/do" method="post">
  Email:<input type="text" name="email" id="email" />
  Password:<input type="text" name="password" id="password" />
  <input type="submit" value="Login" />
</form>

スクリプト

var casper = require("casper").create();

casper.start();
casper.open("http://example.com/login/");

casper.then(function() {
  this.fill('form[action="/login/do"', {
    document.querySelector("#email").value = "user@example.com";
    document.querySelector("#password").value = "1234567890";
  }, true);
});

casper.then(function() {
  // ログイン後にやりたい処理を記述
});

casper.run();
onclickするパターン

ログイン画面

<form>
  Email:<input type="text" name="email" id="email" />
  Password:<input type="text" name="password" id="password" />
  <button onclick="onLogin" id="btn-login">Login</button>
</form>
<script>
function onLogin() {
  // ログイン処理・・・
}
</script>

スクリプト

var casper = require("casper").create();

casper.start();
casper.open("http://example.com/login/");

casper.then(function() {
  this.evaluate(function() {
    document.querySelector("#email").value = "user@example.com";
    document.querySelector("#password").value = "1234567890";
    document.querySelector("#btn-login").click()
  }, true);
});

casper.then(function() {
  // ログイン後にやりたい処理を記述
});

casper.run();

以上です