Deploy CasperJS in a C # project

Tl: dr - How can I link to CasperJS and PhantomJS from a C # project folder?

I have working code that runs a CasperJS script from a C # project when I manually unpack the binaries for CasperJS and PhantomJS to C: drive. (See here for a simple guide and working code below, designated as a WORK Code :)

Since there is no need for installation, I thought it would be easy to move them to the C # project folder instead of \tools\casperjs and \tools\phantomjs . In addition, I need to update the PATH variable in the code using p.StartInfo.EnvironmentVariables["PATH"] = EnvPath;

The whole combination of paths that I'm trying, I keep getting the following error "Fatal: [Errno 2] No such file or directory; did you install phantomjs?"

All files, of course, were included in the file path. Am I missing something?

DOES NOT WORK Code: [filepaths \ tools \ casperjs, \ tools \ phantomjs and C: \ Python34]

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Casper { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string Cpath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); //;C:\phantomjs;C:\casperjs\batchbin FileInfo csp1 = new FileInfo(Cpath + @"\tools\casperjs\n1k0-casperjs-4f105a9\bin\casperjs"); FileInfo csp2 = new FileInfo(Cpath + @"\tools\casperjs\batchbin"); FileInfo pht = new FileInfo(Cpath + @"\tools\phantomjs"); string EnvPath = string.Format(";{0};{1}", pht, csp2); DirectoryInfo dir = csp1.Directory; FileInfo path = new FileInfo(@"C:\Python34\python.exe"); string arg = String.Format("casperjs TESTcasper.js"); ExecutePythonScript(dir, path, arg, EnvPath); } private static void ExecutePythonScript(DirectoryInfo workingDir, FileInfo pythonPath, string casperArguments, string EnvPath) { var p = new Process(); p.StartInfo.EnvironmentVariables["PATH"] = EnvPath; p.StartInfo.WorkingDirectory = workingDir.FullName; p.StartInfo.FileName = pythonPath.FullName; p.StartInfo.Arguments = casperArguments; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.ErrorDataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) MessageBox.Show("e> " + e.Data); }; p.OutputDataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) MessageBox.Show("->" + e.Data); }; p.Start(); p.BeginOutputReadLine(); p.BeginErrorReadLine(); p.WaitForExit(); p.Close(); } } } 

WORKING CODE: [file path C: \ casperjs, C: \ phantomjs and C: \ Python34]

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Casper { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // FileInfo info = new FileInfo(@"C:\casperjs\n1k0-casperjs-4f105a9\bin\casperjs"); DirectoryInfo dir = info.Directory; FileInfo path = new FileInfo(@"C:\Python34\python.exe"); string arg = @"casperjs TESTcasper.js"; ExecutePythonScript(dir, path, arg); } private static void ExecutePythonScript(DirectoryInfo workingDir, FileInfo pythonPath, string casperArguments) { var p = new Process(); p.StartInfo.WorkingDirectory = workingDir.FullName; p.StartInfo.FileName = pythonPath.FullName; p.StartInfo.Arguments = casperArguments; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.ErrorDataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) MessageBox.Show("e> " + e.Data); }; p.OutputDataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) MessageBox.Show("->" + e.Data); }; p.Start(); p.BeginOutputReadLine(); p.BeginErrorReadLine(); p.WaitForExit(); p.Close(); } } } 

TESTcasper.js

 var casper = require('casper').create(); casper.start('http://casperjs.org/', function() { this.echo(this.getTitle()); }); casper.thenOpen('http://phantomjs.org', function() { this.echo(this.getTitle()); }); casper.run(); 
+6
source share
1 answer

It worked. Just make sure ALL the necessary assets are copied correctly. I skipped the package.json file in the path to the file C:\casperjs\n1k0-casperjs-4f105a9

Now it works for me

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Casper { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string Cpath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); //;C:\phantomjs;C:\casperjs\batchbin FileInfo csp1 = new FileInfo(Cpath + @"\tools\casperjs\n1k0-casperjs-4f105a9\bin\casperjs"); FileInfo csp2 = new FileInfo(Cpath + @"\tools\casperjs\n1k0-casperjs-4f105a9\batchbin"); FileInfo pht = new FileInfo(Cpath + @"\tools\phantomjs\phantomjs-1.9.7-windows\"); string EnvPath = string.Format(";{0};{1}", pht, csp2); DirectoryInfo dir = csp1.Directory; FileInfo path = new FileInfo(@"C:\Python34\python.exe"); string arg = String.Format("casperjs OSTESTcasper.js"); ExecutePythonScript(dir, path, arg, EnvPath); } private static void ExecutePythonScript(DirectoryInfo workingDir, FileInfo pythonPath, string casperArguments, string EnvPath) { var p = new Process(); p.StartInfo.EnvironmentVariables["PATH"] = EnvPath; p.StartInfo.WorkingDirectory = workingDir.FullName; p.StartInfo.FileName = pythonPath.FullName; p.StartInfo.Arguments = casperArguments; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.ErrorDataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) MessageBox.Show("e> " + e.Data); }; p.OutputDataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) MessageBox.Show("->" + e.Data); }; p.Start(); p.BeginOutputReadLine(); p.BeginErrorReadLine(); p.WaitForExit(); p.Close(); } } } 
+2
source

Source: https://habr.com/ru/post/973069/


All Articles