2016-05-12 117 views
0

casper.js代碼如下所示。從Visual Studio運行進程

var casper = require('casper').create(); 
var fs = require('fs'); 
var path = 'test.txt'; 

fs.touch(path); 

casper.start('http://www.google.com', function() { 
    fs.write(path, this.getHTML(), 'w'); 
}); 

casper.run(); 

我打電話給這個過程。

System.Diagnostics.Process.Start(@"C:\CasperJS\casperjs-casperjs-b4f7669\bin\casperjs", @"C:\casper\casper.js"); 

,當我在命令行中運行

>casperjs casper.js 

但不是當我嘗試從Visual Studio運行它的工作原理。任何想法爲什麼?

+1

它給出了什麼錯誤?另外,我可以假設代碼只是下載一個HTML並將其存儲在文件中,當您可以使用WebClient在C#中完成時,爲什麼將它與外部程序複雜化? – Gusman

+0

WebClient無法以無頭瀏覽器的方式執行JavaScript。它不會給出任何錯誤,程序運行並關閉而不顯示任何文本 – Mike

+0

嗯,我不是非常精通casper,但'this.getHTML()'只會得到html內容發送,不是嗎?無論如何,這聽起來像是如果程序用完了它的正確目錄,而不是Start重載接受兩個字符串使用接受ProcessStartInfo並將WorkingDirectory設置爲正確的那個,對於您發佈的命令行,我認爲正確工作目錄將存儲.js,然後你不需要傳遞參數的完整路徑,只需傳遞「casper.js」 – Gusman

回答

0

這很容易通過將js文件移動到與我的application.exe文件相同的目錄中修復。然後,我將CasperJS添加到我的路徑中,以便可以在不需要指定完整路徑的情況下調用它。我的C#代碼最終看起來像這樣。

Process.Start("casperjs", "casp.js"); 

其中casperjs是casperjs程序和casp.js是我試圖運行的JavaScript文件。

相關問題