2016-05-12 104 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文件。

相关问题