Fatal error: Uncaught Facebook\WebDriver\Exception\UnknownServerException: no such session
自動テストで複数のクラスの関数を動かすメソッドには注意が必要です。 ひとつのインスタンスでcloseを重ねて使うとエラーが起こります。
class Client { private $driver = null; public function __construct() { $this->driver = $hoge; } public function testTop(){ $cases = new TopTestCases($this->driver); $cases->doTests(); } public function testAdmin(){ $cases = new AdminTestCases($this->driver); $cases->doTests(); } }
class TopTestCases { private $driver = null; public function __construct($driver){ $this->driver = $driver; } public function doTests(){ echo("TopTestCases"."\n"); funcA(); $this->driver->close(); } }
class TopTestCases { private $driver = null; public function __construct($driver){ $this->driver = $driver; } public function doTests(){ echo("TopTestCases"."\n"); funcB(); $this->driver->close(); } }
に対して、
$pc = new Client(); $pc->testTop(); //この終わりでウィンドウがcloseされる $pc->testAdmin(); //Fatal error: Uncaught Facebook\WebDriver\Exception\UnknownServerException: no such session
を行うと、testAdmin()の実行と同時にエラーがでます。ひとつのインスタンスにひとつのウィンドウだから、1回閉じると終わりみたいです。 逆に複数のインスタンスがあるならその分だけcloseしましょう。 冗長になってしまってすみません。