C#でSelenium WebDriverを使用しています。 動的にフォルダーを作成し、失敗したテストのスクリーンショットを保存しようとしています。 ここでは、テストケースのグループ(66のテストケースのテストスイート)を実行しています。 テストスイートを実行した後、GDI +エラーでテストに失敗したことがほとんどなく、スクリーンショットとして取得されませんでした。 しかし、私がそれらを個別に実行すると、ほとんどの場合を除いて、失敗したケース(GDI +エラー)のほとんどが合格していました。ここでExternalException:GDI +で一般的なエラーが発生しました
は、フォルダを作成するためのコードです:ここで
TestExecutionStartTime = DateTime.Now;
baseDirectory = AppDomain.CurrentDomain.BaseDirectory + @"\" + ConfigurationManager.AppSettings.GetValues("failedTests")[0];
Browser = ConfigurationManager.AppSettings["WebDriver"];
DirectoryInfo directory = new DirectoryInfo(baseDirectory);
DirectoryInfo[] subdirs = directory.GetDirectories();
if (System.IO.Directory.GetDirectories(baseDirectory).Length == 0)
{
screenshotDirectory = baseDirectory + @"\" + (DateTime.Now.ToString("yyyy_MM_dd_hh_mm") + "_" + Browser);
Directory.CreateDirectory(screenshotDirectory);
}
は、スクリーンショットを撮るためのコードです:
public void takeScreenshot(string filename)
{
string fname = filename + ".jpg";
string screenshot = screenshotDirectory + @"\" + fname;
Screenshot ss = ((ITakesScreenshot)WebDriver).GetScreenshot();
byte[] image = ss.AsByteArray;
using (MemoryStream ms = new MemoryStream(image))
{
Image i = Image.FromStream(ms);
i.Save(screenshot);
}
私はエラーがこのi.Save(screenshot)
呼び出しであることを前提としていますが、私はしませんでしたそれを解決することができます。
:ここ は、コードのですか? – AntonB
あなたはどのドライバを使用していますか? GDIエラーはおそらくドライバによって返された空のイメージによるものです。例外が発生したときにスクリーンショットを撮るように再試行することができます。 –