cevap

6

PhantomJS Chrome dev araçları içinde Casper komut hata ayıklamak için kullanabileceğiniz bir remote-debugger-port seçeneği vardır. Sonra

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

Chrome'da http://localhost:9000 açmak ve kendini göstermektedir about:blank linke tıklayın: Kullanmak için, sadece bu argümanı ile Casper senaryoyu yürütmek. Daha sonra kendinizi tanıdık Chrome dev araçları bölgesinde bulmanız gerekir. Bu yana

hata ayıklama başlatmak için, iki senaryonuz çalıştırır önce şeylerden biri yapmak zorunda, bir senaryo değil, bir web sayfası: açmak, Krom dev araçları sayfasında

  1. __run()'u konsoluna getirin ve çalıştırın, betik dosyanızı başlatın.
  2. Kodunuza bir debugger; satırı ekleyin ve casper komut dosyasını ek bir --remote-debugger-autorun=yes bağımsız değişkeni ile çalıştırın. Uzaktan hata ayıklama sayfası açıkken bunu yapmak, komut dosyasını debugger; hattınıza ulaşana kadar çalıştıracaktır.

Tüm bunları çok güzel açıklayan mükemmel bir tutorial var.

15

Bunu tamamen çözmedim, ama kesinlikle acıyı azalttım.

PhantomJS, webkit's remote debugger'u etkinleştirmek için command line argument sağlar. AFAIK, PhantomJS bir sunucuyu başlatır ve betiği tarayıcıdaki bir hata ayıklayıcısına sahip bir web sayfasının <head> kod dosyasına döker. Aslında oldukça güzel, kırılma noktaları, vb. Bununla birlikte, rastgele bir komut satırı parametresi ve komut dosyanızın yolunu bulmak için terminalde elle kazı yapmak ciddi şekilde rahatsız edici.

Daha önce, herhangi bir önceki hata ayıklama oturumunu öldüren, PhantomJS'yi başlatan ve sonra da Chrome'da sayfayı açan bir Bash komut dosyasını başlatmak için IntelliJ'in "dış araçları" özelliğini kullandım. Yukarıdaki kod herhangi bir platform/IDE gibi iyi çalışır halde

#!/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 

Sonraki birkaç satır intellij için ayarlardır.

programı: $ProjectFileDir$/path/to/bash/script.sh
parametreleri: $FilePath$
çalışma dir: $ProjectFileDir$

+0

Chrome'da --remote-debugging-port, --remote-debugger-port değil. Aynı zamanda webkit makalesinde de bayrak var. Bayrağın doğru olduğunu iki kez kontrol etmek isteyebilirsiniz. –

+0

Nope, bu [kesinlikle] (https://github.com/ariya/phantomjs/wiki/Troubleshooting#remote-debugging) '--Modote-debugger-port = 9000' – Indolering

+3

Bu cevap bana bol miktarda internet puanı kazandırdı , Bu zamana bir * REAL * çözümünü görmek isterim ve cevabını gönderebilecek herkesin cevabını vermekten mutluluk duyarım! – Indolering

İlgili konular