PHP(Selenium)、例外発生時にスクリーンショットを撮影

これを行うと、seleniumをdockerコンテナの中で走らせている状態で何か例外が見つかっても再びサイトを開いたり、自動テストを走らせたりすることなくデバックすることができます。 以前編集したハックノートから、try catchで例外発生時の処理に入り、

}catch(\Exception $e){
    $dir = __DIR__ . "/exceptions/";  //スクリーンショット保存先のディレクトリ
    $files = glob($dir."*.jpg");  //ディレクトリ内のjpgの数を数える
    $number = sprintf('%02d', count($files)+1); //ディレクトリ内のjpg+1を新しいスクリーンショットファイルの名前とする
    $driver->takeScreenshot($dir . $number .".jpg"); //スクリーンショット!
}

これでオッケーです。

ただこのままだと例外が発生するたびに画像がどんどん溜まってしまうので、別途自動テスト実行前に溜まった画像を破棄すれば良さそうですね。

foreach (glob(__DIR__ . "/exceptions/*.jpg") as $file) {
    unlink($file);
}

これを適切なところで実行してやるといいと思います

ハックノートをフォローして
最新情報をチェックしよう

AWS構築サービスの全てをまとめた資料を公開中

ハックノート(TOWN株式会社)では、AWSの導入や構築支援を行っています。AWS導入メニューやサービス詳細、構成例や費用を掲載した資料をダウンロードできます。

AWSの新規導入やAWSへの移行を検討の際は、ぜひご参考ください。


APNコンサルティングパートナー

TOWN株式会社はAmazon公認コンサルティングパートナーです。