Selenium RC выбрасывает sessionid не должно быть нулевым исключением с assertTextPresent, только ошибка phpunit 3.4? - PullRequest
4 голосов
/ 17 мая 2010

Я хочу перенести мои тесты на селен RC для использования PHPUnit 3.4.12 из PHPUnit 3.3.2.

Тест на селен не пройден, за исключением следующих случаев, когда я использую 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");                
}

Ниже приведен журнал селен 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 Ответ

1 голос
/ 22 июля 2010

На самом деле проблема в методе setAutoStop() - по умолчанию он имеет значение TRUE, поэтому PHPUnit отправляет сигнал остановки на Selenium RC до tearDown().

Добавьте $this->setAutoStop(false); к вашему setUp() методуи $this->stop(); до конца tearDown().

...