Причина, по которой выдается исключение RuntimeException, заключается в том, как работает драйвер селена в PHPUnit.
Он рассматривает определенные ситуации как ошибки, которые выполняют stop () выполнения теста. В частности, код, который останавливает тест в этой ситуации, выглядит следующим образом:
protected function getString($command, array $arguments)
{
try {
$result = $this->doCommand($command, $arguments);
}
catch (RuntimeException $e) {
$this->stop();
throw $e;
}
return (strlen($result) > 3) ? substr($result, 3) : '';
}
Я уже открыл вопрос об этом способе обработки ошибок в драйвере на https://github.com/sebastianbergmann/phpunit/issues/276
Кстати, удаление вызовов stop () в doCommand () и getString () из /usr/share/php/PHPUnit/Extensions/SeleniumTestCase/Driver.php позволит вашему коду перехватить исключение и обработать его как вы предпочитаете.