【问题标题】:How to change selenium WebDriver priority from c#?如何从 c# 更改 selenium WebDriver 优先级?
【发布时间】:2013-01-06 23:01:48
【问题描述】:

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

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

谁能告诉我如何在 selenium 中设置 web 驱动程序优先级?

【问题讨论】:

  • 当我提高 firefox 优先级时”你的意思是在启动任何浏览器特定驱动程序之前更改功能???
  • 不,我的意思是,在 ProcessExplorer 中
  • 您不能在 Selenium 中执行此操作。您应该询问“ProcessExplorer 如何设置进程的优先级?”,然后自己使用该 Windows API。
  • 如果速度是您唯一关心的问题,您可以改用 htmldriver,因为这应该会快一些。但是,您将失去对真正的 Firefox 浏览器进行实际测试的好处。

标签: c# selenium selenium-firefoxdriver


【解决方案1】:

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

没有公开的 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 进程的父进程。也就是什么进程启动了火狐进程?

复制代码没有意义,但这个解决方案对我来说效果很好:How can I get the PID of the parent process of my application ...这会变得很棘手,因为用户可以通过多种方式启动 Firefox,但如果他们使用快捷方式/开始菜单列表项,父进程将是 explorer

您没有提到您用于运行测试的解决方案。无论是通过 Visual Studio 的 Test Runner、NUnit 自己的 GUI、TeamCity、CruiseControl、Jenkins、TFS 还是其他一些 CI 解决方案,但您需要检查启动 Firefox 进程的原因,以确定它是否是“用户创建的”Firefox实例或 Selenium 测试中的一个。

【讨论】:

  • +1 我同意不同意。挂钩系统进程是一个坏主意。更好的解决方案是增加该机器上的 CPU/内存。
  • 实际上,selenium 会为其使用的每个驱动程序启动一个单独的 firefox 进程。您可以同时使用 2 个 webdrivers,并获得 2 个 firefox 进程。在这种情况下,您的解决方案将不起作用。另外,如果在非专用机器上运行,这有时会改变用户firefox的优先级
  • 要确定用户创建的进程和 Selenium 创建的进程/您的测试解决方案,您需要查看“父”进程:stackoverflow.com/questions/2531837/…(我不相信有任何进程之间的差异,而不是启动它)....再次,由于硬件问题或测试的结构,可能测试运行缓慢。它们在您自己的机器和专用服务器上运行缓慢吗?
  • 不要费心向 Selenium 开发人员请求这样的功能。它几乎肯定会被拒绝,因为它与 Remote WebDriver 没有密切关系并且几乎不可能实现。
猜你喜欢
  • 2015-02-01
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
相关资源
最近更新 更多