2015-05-19 112 views
1

我無法讀取命令提示符中的調試問題。我可以將它發送到我的PhantomJS或CasperJS腳本中的文本文件嗎?如何將CasperJS調試結果打印到文本文件

這是我的python代碼;

import os 
import subprocess 

#proxies = {'https': 'http://wmhproxy2:8080'} 
APP_ROOT = os.path.dirname(os.path.realpath(__file__)) 

CASPER = "C:/casperjs/bin/casperjs" 

#SCRIPT = os.path.join(APP_ROOT,'unicorn.js') 
SCRIPT = os.path.join(APP_ROOT,'unicorn.js') 

params = CASPER +' '+ SCRIPT 
paper = subprocess.check_output(params,shell=True) 
rock = paper.text 
salesforce = open('S:/N/salesforce2.txt','w') 
salesforce.write(write) 
print(subprocess.check_output(params,shell=True)) 

CasperJS腳本:

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: "debug" 
}); 

var x = require('casper').selectXPath; 
casper.options.waitTimeout = 7000; 

casper.start('http://www.click2houston.com/',function(){ 
    this.echo(this.getTitle()); 
}).viewport(1200,1000); 

casper.run(); 

回答

0

是的,你可以將日誌追加到您的CasperJS腳本文件。

CasperJS有一個內部事件管理,它公開log event。一個簡單的對象被傳入包含日誌消息的事件處理程序中。如果您需要不同格式的日誌,那麼您需要自己動手或在事件處理程序中實施part of the log code

var fs = require("fs"); 

fs.write("mylogfile.log", "", "w"); // overwrite log file 
casper.on("log", function(entry){ 
    fs.write("mylogfile.log", entry.message + "\n", "a"); 
}); 

CasperJS是建立在PhantomJS的頂部,這樣你就可以直接使用PhantomJS' file system module。當然,您也可以將日誌文件作爲命令行選項傳遞到腳本中,並通過casper.cli將其發送出去。

+0

請注意,這應該是從一個CasperJS腳本內工作。 CasperJS會將mylogfile.log文件寫入python腳本啓動的目錄中。正如我所說的,如果您想在其他位置使用它,您可以將絕對日誌文件路徑傳遞到CasperJS腳本中。 –

+0

好的非常感謝你!這工作完美 – PrincessPinkBunnyPants

+0

您好Artjom你知道我將如何將代理添加到代碼的Python部分?我試過服務代理,但我不知道在哪裏注入它?我在這裏找到關於代理的文檔。這是我迄今爲止。 'service_args = [ '--proxy = wmhproxy2:8080', '--proxy-type = http' ]'在我的APP_ROOT之上。 – PrincessPinkBunnyPants

相關問題