1

我一直在开发一个应用程序来爬取 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 平台的此问题的官方文档。

提前致谢!

4

1 回答 1

3

控制台窗口的外观是设计使然。.NET 绑定的开发人员和维护人员坚信,启动可能输出到控制台但不显示控制台窗口的进程对调试工作有害。如果这对您来说真的是个大问题,您可以使用自己的System.Diagnostics.Process对象启动 PhantomJS.exe,并使用RemoteWebDriver该类来连接和控制它。但是请注意,您要对 PhantomJS.exe 进程的生命周期负责,并且需要自己处理关闭该进程(即,您不能依赖于driver.Quit()为您退出进程,就像您可以使用特定于浏览器的PhantomJSDriver类)。

于 2013-05-23T13:11:06.843 回答