2010-10-15 74 views
3

我正在使用PHPUnit的Selenium扩展来进行Web测试。我发现它非常慢,只需要几秒钟就可以完成一个测试方法。部分问题似乎是它在每个测试方法(getNewBrowserSession)之间启动一个新的Selenium会话,作为runTest()的一部分。这很贵。我可以在单个硒会话中运行一个类,甚至整个套件的测试方法。如何让PHPUnit + Selenium运行得更快?

可以这样做吗?有没有其他提示PHPUnit + Selenium的提示?

谢谢。

回答

9

您是否尝试过使用browserSessionReuse选项?例如。启动硒与

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

谢谢你,这加快了测试! – Schwern 2010-10-18 21:41:44

+0

@borrible - 这个开关似乎不适合我......也许是Selenium 2的问题? – Ben 2013-10-01 08:24:43

1

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

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

另外Selenium 1使用JavaScript来驱动浏览器,所以它在IE上有点慢。 Selenium 2(也称为WebDriver)使用本地方法来驱动浏览器,因此至少IE测试速度更快。

+0

谢谢,我们已经遇到了IE浏览器的XPath性能问题,并使用定位器和JQuery。我们使用Selenium 2. – Schwern 2010-10-15 21:22:30

+0

那么你需要在suite start上创建一个WebDriver,并且只需要在套件端调用WebDriver.quit() – 2010-10-16 09:58:26

0

我建议你建立连续集成系统在晚上进行测试。然后在早上你会得到什么样的测试信息,什么不是。 检查哈德森。

+0

我们已经在使用Hudson了。一夜之间的测试太长,无法等待测试直接用于帮助和加速开发。我们使用持续集成系统针对所有浏览器类型和版本以及操作系统运行测试。 – Schwern 2010-10-16 21:24:53