Selenium RC抛出的sessionid不应该是assertTextPresent的null异常,只有phpunit 3.4 bug?

时间:2010-05-17 05:57:18

标签: selenium phpunit selenium-rc

我希望将我的selenium RC测试迁移到使用PHPUnit 3.3.2中的PHPUnit 3.4.12。

当我使用assertTextPresent()时,硒测试将失败,但以下情况除外:

PHPUnit_Framework_Exception: Response from Selenium RC server for getLocation().
ERROR Server Exception: sessionId should not be null; has this session been started yet?.

例如:

public function testSending($browser)
{
   ...
   $browser->click("send");
   $browser->waitForPageToLoad("30000");
   $browser->assertTextPresent("text");                
}

下面是selenium RC日志(在Windows上运行):

15:40:19.676 INFO - Command request: isTextPresent[text, ] on session 153d03a123c42098711994f43c2db34
15:40:19.691 INFO - Got result: OK,false on session 153d023a123c42098711994f43cdb34
15:40:19.879 INFO - Command request: testComplete[, ] on session 153d023a123c4298711994f43c2db34
15:40:19.879 INFO - Killing Firefox...
15:40:20.269 INFO - Got result: OK on session 153d023a123c42098711994f43c2db34
15:40:20.472 INFO - Command request: getLocation[, ] on session null
15:40:20.472 ERROR - Exception running 'getLocation 'command on session null
java.lang.NullPointerException: sessionId should not be null; has this session been started yet?

正如您所看到的,测试应该已经完成​​,如“Killing Firefox”位所示,但它继续执行其他操作并触发导致异常的getLocation [,]命令。

我已尝试使用PHPUnit 3.3.2进行相同的测试但没有产生此问题 - 测试很快就会在没有getLocation()的情况下结束。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

实际上问题在于setAutoStop()方法 - 默认情况下它设置为TRUE,因此PHPUnit在tearDown()之前向Selenium RC发送停止信号。

$this->setAutoStop(false);添加到您的setUp()方法,将$this->stop();添加到tearDown()的结尾。