通过Selenium PhantomJS在Exception中截取的屏幕截图

Ary*_*rya 5 selenium screenshot phantomjs screenshotexception

有一段时间我在Selenium PhantomJS测试中得到一个例外,其中包括下面的文本

Caused by: org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken
Run Code Online (Sandbox Code Playgroud)

那么截图真的像消息一样被拍了吗?这个屏幕截图会保存在哪里?我检查了程序目录,没有保存图像.

eko*_*nov 3

在我的实现中,文件夹是在App.config文件中指定的,如下所示:

<add key="ScreenShot.FolderPath" value="..\\..\\..\\TestProject\\Screenshots\\" />
Run Code Online (Sandbox Code Playgroud)

当您让CI服务器运行自动测试时,这非常有用。所以 XML 戳将如下所示:

<XmlPoke XmlInputPath="TestProject\App.config"
             Query="//appSettings/add[@key='ScreenShot.FolderPath']/@value"
             Value="$(ScreenShot.FolderPath)"/>
Run Code Online (Sandbox Code Playgroud)

最后在代码中指出实际屏幕截图的保存位置:

var screenshotDriver = IWebDriver as ITakesScreenshot;
if (screenshotDriver != null)
   {
     var screenshot = screenshotDriver.GetScreenshot();
     screenshot.SaveAsFile(ConfigurationManager.AppSettings["ScreenShot.FolderPath"] 
                           + screenShotName, ImageFormat.Jpeg);                          
   }
Run Code Online (Sandbox Code Playgroud)