0

我试图让我的测试在专用服务器上运行得更快。我注意到,通常测试运行缓慢,但是当我增加 firefox 优先级(默认情况下低于正常)时,它们运行得更快。

我正在寻找一种FirefoxDriver可以让我选择进程优先级的设置,但我找不到。

谁能指出我如何在硒中设置网络驱动程序优先级?

4

1 回答 1

2

我不同意你这样做的原因,我认为简单地改变优先级并不是解决问题的方法。

没有公开的 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 测试的一个。

于 2013-01-07T10:24:18.673 回答