2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

もう面倒くさいからPhantomJS単体でファイルをダウンロードする

Posted at

課題

S::R::D (webDriver)+ PhantomJS でファイルダウンロードができない

解決法

前回から検証を進めた結果、以下の方法が良いと思いました。

  • S::R::D でエクスポートボタンをクリックした状態を、PhantomJSにうまいこと渡してダウンロード処理をする

そもそも、前にGitHubでissueを発行したときも「ようわからん」的な返答を頂いたので、あまり一般的な方法じゃないんでしょうね。
How to download file with Phantomjs?

よって、webDriver の操作なしでファイルダウンロードを実行したほうが良いということになりました。

また、ログイン操作やクリック遷移はPhantomJS単体でもできるので、「うまいこと渡す」というのもやめました。そのサンプルコードが以下です。

facebook_login.js
// コマンドラインからparameter を受け取り、facebookにログインしてログイン後のホーム画面をキャプチャする

// 引数受け取り
var system = require("system"); 
var username = system.args[1];
var password = system.args[2];

// facebookログイン
var page = require("webpage").create();
page.open("https://ja-jp.facebook.com/",function(){
    page.onLoadFinished = function(){
        page.render("facebook_login.png");
        phantom.exit();
    }
    page.evaluate(function(arr){
        document.querySelector("#email").value = arr[0];
        document.querySelector("#pass").value = arr[1];
        document.querySelector("#login_form").submit(); //フォームのIDを指定
    },[username,password]);
})

上記のコードはコンソールから以下のように実行します
phantomjs facebook_login.js <facebookユーザ名> <facebookパスワード>

正直、このサンプルはここの内容をほぼ パクっただけ なので、参照元様に感謝です。

今後

ここの記事を参考にしてcoffeescriptでコードを書いていますが、getElementById の箇所で TypeError: 'null' is not an object エラーが頻発してます。慣れの問題なんでしょうが、coffeescriptは初めてなので何が問題なのかようわかっておりません。。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?