我一直在开发一个应用程序,用于浏览URL列表并下载实时源代码(即生成的源代码而不是原始代码) - 我已经通过Selenium.NET使用PhantomJS来执行此操作以无头的形式完成手术。
进程本身工作正常,但每次我的一个线程加载PhantomJS驱动程序的实例时,它在新打开的控制台中运行PhantomJS.exe(作为GhostDriver)。我希望避免这种情况,因为每次线程启动时,控制台窗口都会将重点放在机器上。有谁知道这是否可能?我正在使用一个非常基本的代码片段来启动实例:
IWebDriver driver = new PhantomJSDriver();
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
driver.Navigate().GoToUrl(Entry);
///... Store HTML and do main work here ...
driver.Quit();
driver.Dispose();
有没有办法通过可以传递给构造函数的其他功能隐藏exe窗口,或者通过Process.Start等加载实例的更好方法。?
任何帮助都会受到赞赏,因为我似乎无法找到任何处理.NET平台此问题的官方文档。
提前致谢!
答案 0 :(得分:3)
控制台窗口的外观是设计使然。 .NET绑定的开发人员和维护人员坚信,在不显示控制台窗口的情况下启动可能输出到控制台的进程对调试工作是不利的。如果这对您来说真是个大问题,您可以使用自己的System.Diagnostics.Process
对象启动PhantomJS.exe,并使用RemoteWebDriver
类连接并控制它。但是请注意,您负责PhantomJS.exe进程的生命周期,并且需要自己处理关闭该进程(即,您不能依赖driver.Quit()
为您退出进程,就像你可以使用浏览器特定的PhantomJSDriver
类一样。)