35

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. それをクリックすると、関係のない about:blank ページのインスペクターが表示され、URL が表示されますhttp://localhost:9001/webkit/inspector/inspector.html?page=1。ドキュメントでは の実行について説明__run()していますが、実行するページにたどり着けないようです。no-op であるabout:htmla が含まれているようです。__run()

FWIW、W8でPhantomJS 1.9.1を使用しています。

私は何が欠けていますか?

4

4 に答える 4

13

Chrome バージョン 57.0.2987.133 (64 ビット) を使用して、Mac でデバッグを機能させるのに問題がありました。デバッガーを localhost:9000 (127.0.0.1:9000 は機能しませんでした) で開くようにしましたが、__run() を入力した後 (はい、アンダースコアが 2 つ付いています)、応答がありませんでした。ソースの下に他の js ファイルが表示されました。私のファイルはリストされていましたが、空でした。(Chromeでデバッグを有効にしました)

私はサファリで同じことを試しましたが、すべて宣伝どおりに機能しました.

Chrome の更新: (以下の Thiago Fernandes から): どうやらこの問題は、Chrome が Enter キーを受け入れないことが原因で発生しているようです。そのため、回避策は、Chrome コンソール内でこの関数を評価して、enterKey を機能させることです。

function isEnterKey(event) { return (event.keyCode !== 229 && event.keyIdentifier === "Enter") || event.keyCode === 13; } 
于 2017-04-26T02:15:13.730 に答える