我试图让我的测试在专用服务器上运行得更快。我注意到,通常测试运行缓慢,但是当我增加 firefox 优先级(默认情况下低于正常)时,它们运行得更快。
我正在寻找一种FirefoxDriver
可以让我选择进程优先级的设置,但我找不到。
谁能指出我如何在硒中设置网络驱动程序优先级?
我试图让我的测试在专用服务器上运行得更快。我注意到,通常测试运行缓慢,但是当我增加 firefox 优先级(默认情况下低于正常)时,它们运行得更快。
我正在寻找一种FirefoxDriver
可以让我选择进程优先级的设置,但我找不到。
谁能指出我如何在硒中设置网络驱动程序优先级?
我不同意你这样做的原因,我认为简单地改变优先级并不是解决问题的方法。
没有公开的 API 可以执行此操作,因此您可以为此向 Selenium 开发人员发送请求 ( http://code.google.com/selenium )。
因此,您必须在Selenium 创建浏览器会话后更改优先级进程。
您将需要找到该过程:
var fireFoxProcesses = Process.GetProcessesByName("firefox");
这将返回一组Process
对象,但是,如果您正在运行一个又一个测试,则应该只firefox.exe
打开一个进程。这是我的假设。因此,我们得到了实际的进程对象:
// should only be one, unless you are opening a few tests in concurrently.
var actualFirefoxProcess = fireFoxProcesses.First();
最后,更改它的优先级:
actualFirefoxProcess.PriorityClass = ProcessPriorityClass.High;
我想这可能会有点不可靠。
编辑
至于“用户创建的”Firefox 和由 Selenium 运行的 Firefox 的区别,您可以查看 firefox 进程的父进程。也就是说,是什么进程启动了 Firefox 进程?
复制代码没有意义,但这个解决方案对我来说效果很好:如何获取应用程序父进程的 PID ...这会变得很棘手,因为用户可以通过多种方式启动 Firefox,但如果他们使用的是快捷方式/start 菜单列表项,父进程将是explorer。
您没有提到您用于运行测试的解决方案。无论是通过 Visual Studio 的 Test Runner、NUnit 自己的 GUI、TeamCity、CruiseControl、Jenkins、TFS 还是其他一些 CI 解决方案,但您需要检查启动 Firefox 进程的原因,以确定它是否是“用户创建的”Firefox实例或来自 Selenium 测试的一个。