Я использую Selenium WebDriver в C# и Я пытаюсь динамически создавать папку и сохранять скриншоты неудачных тестов. Здесь я запускаю группу тестовых примеров (Test Suite из 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, вероятно, связана с пустым изображением, возвращаемым драйвером. Вы можете повторить попытку сделать снимок экрана, когда произойдет исключение. –