我希望将我的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()
的情况下结束。
有什么想法吗?
答案 0 :(得分:1)
实际上问题在于setAutoStop()
方法 - 默认情况下它设置为TRUE,因此PHPUnit在tearDown()
之前向Selenium RC发送停止信号。
将$this->setAutoStop(false);
添加到您的setUp()
方法,将$this->stop();
添加到tearDown()
的结尾。