【问题标题】:How to hide PhantomJS.exe when running GhostDriver on Selenium在 Selenium 上运行 GhostDriver 时如何隐藏 PhantomJS.exe
【发布时间】:2013-05-23 21:11:06
【问题描述】:

我一直在开发一个应用程序来爬取 URL 列表并下拉实时源代码(即生成的源代码而不是原始代码) - 我已经通过 Selenium.NET 使用 PhantomJS 来按我的意愿执行此操作以无头形式完成操作。

进程本身运行良好,但每次我的一个线程加载 PhantomJS 驱动程序的实例时,它都会在新打开的控制台中运行 PhantomJS.exe(作为 GhostDriver)。我想避免这种情况是可能的,因为每次线程启动控制台窗口都会将焦点转移到机器上。有谁知道这是否可能?我正在使用一个非常基本的 sn-p 来启动实例:

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 平台处理此问题的官方文档。

提前致谢!

【问题讨论】:

    标签: c# selenium phantomjs


    【解决方案1】:

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

    【讨论】:

    • 吉姆,你能举个例子吗?
    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 2023-03-04
    • 2014-06-01
    • 1970-01-01
    • 2010-09-12
    • 2012-05-10
    相关资源
    最近更新 更多