私は、PhantomJSでリモートデバッグを設定しようとしていますが、運はあまりありません。 https://github.com/ariya/phantomjs/wiki/Troubleshooting の指示に従っています。 _debug.js
_という名前の小さなプログラムがあります。
_var system = require('system' ), fs = require('fs'), webpage = require('webpage');
(function(phantom){
var page=webpage.create();
function debugPage(){
console.log("Refresh a second debugger-port page and open a second webkit inspector for the target page.");
console.log("Letting this page continue will then trigger a break in the target page.");
debugger; // pause here in first web browser tab for steps 5 & 6
page.open(system.args[1]);
page.evaluateAsync(function() {
debugger; // step 7 will wait here in the second web browser tab
});
}
debugPage();
}(phantom));
_
これをコマンドラインから実行します。
_$ phantomjs --remote-debugger-port=9001 --remote-debugger-autorun=yes debug.js my.xhtml
_
_console.log
_メッセージがシェルウィンドウに表示されます。ブラウザページを開いて_localhost:9001
_にアクセスします。この時点で、ドキュメントには「ファントムコンテキストの最初のWebインスペクタを取得する」と書かれていますが、_about:blank
_のエントリは1つしかありません。それをクリックすると、無関係なabout:blankページのインスペクターにURL _http://localhost:9001/webkit/inspector/inspector.html?page=1
_が表示されます。ドキュメントでは__run()
の実行について説明していますが、それを行うページにアクセスできないようです。 _about:html
_は、無操作である__run()
を継続しているようです。
FWIW、私はW8でPhantomJS 1.9.1を使用しています。
私は何が欠けていますか?
ドキュメントには次のように書かれています:
スクリプトを実行するには、Web Inspector Consoleで__run()コマンドを入力するだけです。
__run()
はノーオペレーションではなく、単にスクリプトのラッパーです。最初に[コンソール]タブを選択してから、コマンドウィンドウに__run()
と入力する必要があります。 Chromeに精通している場合は、開発者ツールの場合とほぼ同じです。
スクリプトをデバッグするには、次のようにphantomjsを起動します。
_phantomjs --remote-debugger-port=9000 hello.js
_
動作する非常にシンプルなテストスクリプト(hello.js)を次に示します。 _debugger;
_をスクリプトの先頭に配置するか、スクリプトのどこにでもデバッガーに侵入する必要があることに注意してください。
_debugger;
for (var i=0; i < 5; i++)
{
console.log('debugging in phantom js:' + i);
}
phantom.exit();
_
次のURLをブラウザにロードするだけです:
その後、ブラウザのページにリンクが表示されます
_about:blank
_
それをクリックすると、Chromeインスペクターのようなページ全体が表示されます。このページにあるツールバーの[コンソール]ボタンをクリックします(使用しているChromeまたはSafariのコンソールではありません)。
さて、そのコンソールで__run()
と入力してEnterを押してください。スクリプトが表示され、デバッグが開始されます!
Chromeバージョン57.0.2987.133(64ビット)を使用してデバッグをMacで動作させるのに問題がありました。localhost:9000でデバッガを開くようにしました(127.0.0.1:9000は動作しませんでした)私にとって)しかし、__ run()(はい、二重アンダースコア付き)を入力した後、応答はありませんでした。ソースの下に他のjsファイルが表示され、私のリストが表示されましたが空でした(クロムでデバッグを有効にしました)
私はサファリで同じことを試してみましたが、すべて宣伝どおりに機能しました。
Chromeの更新:(以下のThiago Fernandesから):明らかに問題はChrome= Enterキーを受け入れないため、回避策はこの関数をchromeコンソール、enterKeyを機能させるには:
function isEnterKey(event) { return (event.keyCode !== 229 && event.keyIdentifier === "Enter") || event.keyCode === 13; }
私の場合、__run()
はコンソールで実行されません。これがあなたと同じ問題である場合、続きを読んでください...
PowerShellを開き、スクリプトを実行します:
_cls
# we go to the folder where our test.js script resides
cd "C:\Users\xxx\Phantomjs.Console"
phantomjs --remote-debugger-port=9000 --remote-debugger-autorun=yes test.js
_
__run()
を実行します!デバッグ用にスクリプトにdebugger
ステートメントを追加してください!