如何从c#更改selenium WebDriver优先级
本文关键字:selenium WebDriver 优先级 更改 | 更新日期: 2023-09-27 17:50:48
我正在尝试使我的测试在专用服务器上运行得更快。我注意到,通常情况下,测试运行缓慢,但当我提高火狐优先级(默认情况下低于正常),他们运行得快多了。
我正在寻找FirefoxDriver
中的设置,可以让我选择进程优先级,但我找不到。
谁能告诉我如何在硒中设置web驱动程序优先级?
我不同意你为什么这样做,我认为简单地改变优先级是不是解决你的问题的方法。
没有公开的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,但是如果他们使用快捷方式/开始菜单列表项,父进程将是explorer。
您没有提到您使用什么解决方案来运行测试。无论是通过Visual Studio的Test Runner、NUnit自己的GUI、TeamCity、CruiseControl、Jenkins、TFS还是其他CI解决方案,你都需要检查是什么启动了Firefox进程,以确定它是"用户创建"的Firefox实例还是来自Selenium测试的实例。