Selenium PhantomJS テストで、以下のテキストを含む例外が発生することがあります。
Caused by: org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken
では、メッセージが示すように、スクリーンショットは本当に撮影されたのでしょうか? このスクリーンショットはどこに保存されますか? プログラムディレクトリを確認しましたが、画像が保存されていませんでした。
Selenium PhantomJS テストで、以下のテキストを含む例外が発生することがあります。
Caused by: org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken
では、メッセージが示すように、スクリーンショットは本当に撮影されたのでしょうか? このスクリーンショットはどこに保存されますか? プログラムディレクトリを確認しましたが、画像が保存されていませんでした。
私の実装では、フォルダーは次のApp.config
ようにファイルで指定されます。
<add key="ScreenShot.FolderPath" value="..\\..\\..\\TestProject\\Screenshots\\" />
これは、 CIサーバーで自動テストを実行している場合に役立ちます。したがって、XML poke は次のようになります。
<XmlPoke XmlInputPath="TestProject\App.config"
Query="//appSettings/add[@key='ScreenShot.FolderPath']/@value"
Value="$(ScreenShot.FolderPath)"/>
最後に、コードで実際のスクリーンショットを保存する場所を指定します。
var screenshotDriver = IWebDriver as ITakesScreenshot;
if (screenshotDriver != null)
{
var screenshot = screenshotDriver.GetScreenshot();
screenshot.SaveAsFile(ConfigurationManager.AppSettings["ScreenShot.FolderPath"]
+ screenShotName, ImageFormat.Jpeg);
}