freedom-man.com

ブログは俺のセーブポイント

Category: node.js

CasperJSでSalesforceのレコード詳細画面を自動キャプチャ

プロファイルのキャプチャを取るのにChromeExtensionとかでキャプチャを手動で取っていたのを

何とかしたかったのでCasperJSで自動化してみました。

 

CasperJSはPhantomJSのユーティリティで、ヘッドレスなブラウザをAPI経由で操ってテストしたり

キャプチャを取ったりすることが出来るツールになります。

 

今回は

1. SOQLを発行してレコードの一覧を取得

2. 1で取得したレコードIDを元に各レコード詳細画面に遷移後、キャプチャを取得

という流れでキャプチャを取ってみます。

 

作成物はこちら

ちなみにSOQLで取得できて、取得したIDを使ってhttps://{ドメイン}/{取得したID}のURLで

アクセスできるオブジェクトであれば何でも取得できます(プロファイルのキャプチャもOKです)。

1. 指定オブジェクトのSalesforceIDの一覧を取得

nodejsでjsforce使って指定のレコードIDの一覧を取得します。

クレデンシャルや実行SOQLをパラメータで与えるためcommanderを利用。

2. SalesforceIDの一覧から詳細ページにアクセスしてキャプチャを取得

1でファイルに保存されたレコードIDの一覧をCasperJSに食わせてキャプチャを取得していきます。

本当は標準入力から取得したかったんですが、うまくいかなかった…。

ログインのエンドポイント(https://login.salesforce.com or https://test.salesforce.com)に対して

un=***&pw=***のPOSTによる方式でログインを行い

そのあとはレコードIDの一覧から、https://{ドメイン}/{レコードID}のURLに

順々にアクセスしてキャプチャを保存するといった流れになります。

 

ログイン後3秒ほどWaitをかけているのは、ログイン後のSessionIDの割り当て(Cookieへの保存)と

最初のランディングに少々時間を要すためです。(もうちょっとスマートな方法があれば教えて下さい…。)

 

ちなみに、CasperJS(PhantomJS)を使っているのでWebKitベースなレンダリングでキャプチャされます。

IEのTridentを使ってキャプチャしたい場合は、TrifleJSを使用して上記スクリプトを書き換える必要があります。

TrifleJSはCasperJSがまだ対応していないみたいなので、PhantomJS形式で書く必要があり結構シンドイです。

socket.ioとTwitter StreamingAPIでツイート垂れ流しタイム

node.js初心者がsocket.io&Twitter Streaming APIを使ってツイートを垂れ流すという、

socket.ioの学習にありがちなサンプルを試してみた。

 

全体の流れは

1. node.jsインストール

2. npm install express とか npm install ntwitter とか必要なモジュールをインストール

3. express -e exapp → cd exapp → npm install でexpressアプリのひな形作成

4. exapp/views/index.ejs, exapp/app.js を下記のように書き換え

 

app.js

 

views/index.ejs

 

5. node app.js でhttp://localhost:8888/?keyword=freedomみたいな感じでアクセス

 

ハマることはあんまり無いかな。

そもそも100行以下だし…。

でも出来る事は衝撃的!

 

次は簡単なchatアプリを作ってみます。

 

参考サイトはこちら

http://d.hatena.ne.jp/replication/20120318/1332044327

http://d.hatena.ne.jp/miruto824/20110608/1307526558

 

node.jsの基礎はこちらがおすすめ

http://libro.tuyano.com/index2?id=1115003

 

socket.ioのサイト

http://socket.io/#how-to-use

 

ntwitterのgithub

https://github.com/AvianFlu/ntwitter

 

 

© 2017 freedom-man.com

Theme by Anders NorenUp ↑