答えて

6

PhantomJSあなたはクロームのdevのツールであなたのキャスパーのスクリプトをデバッグするために使用することができますremote-debugger-portオプションがあります。単純にこの引数を使用してキャスパーのスクリプトを実行し、それを使用するには:

casperjs test script.js --remote-debugger-port=9000

を次に、Chromeでhttp://localhost:9000を開き、自分自身を提示しabout:blankのリンクをクリックしてください。おなじみのChrome開発ツールの分野であなた自身を見つけてください。

このスクリプトではなく、Webページなので、デバッグを開始するために、あなたはあなたのスクリプトが実行される前に、2つのいずれかをしなければならない:クロームのdevのツールページで

  1. 、開きますコンソールと実行__run()からは実際にあなたのスクリプトを起動します。
  2. あなたのコード内のdebugger;行を挿入して、追加の--remote-debugger-autorun=yes引数を指定して、あなたのキャスパーのスクリプトを実行します。リモートデバッグページを開いた状態でスクリプトを実行すると、debugger;行に達するまでスクリプトが実行されます。

これはすべて非常にうまく説明している素晴らしいtutorialです。

15

私はこれを完全に解決しませんでしたが、私は間違いなく痛みを軽減しました。

PhantomJS webkit's remote debuggerを有効にするには、command line argumentを提供します。 AFAIK、PhantomJSは、サーバーを起動して、使い慣れたインブラウザデバッガを使用してスクリプトをWebページの<head>にダンプします。しかし、実際には、コマンドラインのパラメータとスクリプトへのパスを手動で掘り下げてしまうことは、非常に面倒です。

IntelliJの「外部ツール」機能を使用して、以前のデバッグセッションを終了し、PhantomJSを起動し、Chromeでページを開くBashスクリプトを起動しました。

#!/bin/bash 

lsof -i [email protected]:9000 #list anything bound to port 9000 
if [ $? -eq 0 ] #if something was listed 
    then 
     killall 'phantomjs' 
fi 

/usr/local/Cellar/phantomjs/2.0.0/bin/phantomjs --remote-debugger-port=9000 $1 & 
# --remote-debugger-autorun=yes <- use if you have added 'debugger;' break points 
# replace $1 with full path if you don't pass it as a variable. 

sleep 2; #give phantomJS time to get started 

open -a /Applications/Google\ Chrome.app http://localhost:9000 & #linux has a different 'open' command 
# alt URL if you want to skip the page listing 
# http://localhost:9000/webkit/inspector/inspector.html?page=1 

#see also 
#github.com/ariya/phantomjs/wiki/Troubleshooting 

次の数行はIntelliJの設定ですが、上記のコードはどのプラットフォーム/ IDEでも同様です。

プログラム:$ProjectFileDir$/path/to/bash/script.sh
パラメータ:$FilePath$
作業ディレクトリ:$ProjectFileDir$

+0

Chromeでは、--remote-debugger-portではなく--remote-debugging-portです。これはウェブキットの記事の旗でもあります。フラグが正しいことを再度確認することができます。 –

+0

いいえ、それは[間違いなく](https://github.com/ariya/phantomjs/wiki/Troubleshooting#remote-debugging) '--remote-debugger-port = 9000' – Indolering

+3

ですが、この回答は私にインターネットのポイントをたくさん与えてくれました私はこれにいつか*実際の*解決策を見たいと思います。私はそれを投稿できる人に答えを授与することに満足しています! – Indolering

関連する問題