【问题标题】:How can I make PHPUnit + Selenium run faster?如何让 PHPUnit + Selenium 运行得更快?
【发布时间】:2026-01-26 21:40:01
【问题描述】:

我正在使用 PHPUnit 的 Selenium 扩展来进行 Web 测试。我发现它非常慢,一个测试方法需要几秒钟。部分问题似乎是它在每个测试方法 (getNewBrowserSession) 之间启动了一个新的 Selenium 会话,作为 runTest() 的一部分。这是昂贵的。我可以在单个 selenium 会话中运行一个类甚至整个套件的测试方法。

这可以吗?还有其他加快 PHPUnit + Selenium 的技巧吗?

谢谢。

【问题讨论】:

    标签: performance selenium phpunit


    【解决方案1】:

    您是否尝试过使用 browserSessionReuse 选项?例如。从硒开始

    java -jar ./selenium-server.java -browserSessionReuse
    

    【讨论】:

    • 感谢您,大大加快了测试速度!
    • @borrible - 这个开关似乎对我不起作用……可能是 Selenium 2 的问题?
    【解决方案2】:

    您需要在测试之间共享 Selenium 实例。我不熟悉 PHPUnit,但在 JUnit 中你使用静态成员(创建一个包含 Selenium 实例的基本测试类,所有测试都应该扩展它)。在 TestNG 中,您可以使用测试上下文。

    如果您在 IE 上进行测试,请尽量减少 XPath 的使用 - 缺少原生 XPath 会使测试运行速度变慢。

    Selenium 1 也使用 JavaScript 来驱动浏览器,所以在 IE 上它有点慢。 Selenium 2(又名 WebDriver)使用原生方法来驱动浏览器,因此至少 IE 测试更快。

    【讨论】:

    • 谢谢,我们已经在 IE 上遇到了 XPath 性能问题,并且正在使用定位器和 JQuery。我们正在使用 Selenium 2。
    • 那么你需要在套件开始时创建一个 WebDriver 并仅在套件结束时调用 WebDriver.quit()
    【解决方案3】:

    我建议您构建持续集成系统以在晚上运行测试。然后在早上你会得到信息什么测试是好的,什么不是。 检查哈德森。

    【讨论】:

    • 我们已经在使用 Hudson。隔夜测试时间太长,无法等待测试用于直接帮助和加速开发。我们使用持续集成系统针对所有浏览器类型、版本和操作系统运行测试。