Я новичок в Selenium и столкнулся с проблемой - как сделать и сохранить снимок экрана в определенную папку. Я использую связь Selenium+C#+NUnit.
Прочитал много информации по этому поводу, но большинство из них посвящено тому, как сделать снимок экрана и добавить его в html-файл. Но это не то, что мне нужно.
Мне нужно сохранить файл снимка экрана в папку, поэтому, когда я запускаю Pipeline в AzureDevOps, блок «Результаты тестов» также содержит этот снимок экрана и отображает его.
Я использовал эту часть кода. Тест запускается и не проходит, но скриншот не сделан
[OneTimeTearDown]
public void OneTimeTearDown()
{
if (TestContext.CurrentContext.Result.Outcome != ResultState.Failure)
{
var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
var filePath = "pathToTheFolder\\Screenshots\\";
screenshot.SaveAsFile(filePath, Png);
}
}
Может быть, кто-то может помочь в этом и, возможно, поделится знаниями и кодом)
Спасибо вам всем!
Пытаться
using System.Drawing; //add this using statement
[OneTimeTearDown]
public void OneTimeTearDown()
{
if (TestContext.CurrentContext.Result.Outcome != ResultState.Failure)
{
var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
var filePath = "pathToTheFolder\\Screenshots\\";
screenshot.SaveAsFile(filePath + System.Drawing.Imaging.ImageFormat.Png);
}
}
Этот урок выглядит как то, что вам нужно
Спасибо @Narish за ответ! Направит меня на верный путь! И статья полезная. Объяснение будет в комментарии ниже)
Нашел способ достичь своей цели - сохранить скриншоты для неудачных тестов в папке bin проекта и прикрепить их к разделу Pipeline «Результат теста» в дальнейшем. Это окончательный рабочий код. Я удалил его из [OneTimeTearDown] и установил на [TearDown]. А также добавлено вложение с последней строкой, позволяющее отправлять скриншоты в блок Pipelines "Результат теста".
Это мой файл Base.cs, в котором я нахожу IWebDriver, все методы Setup и TearDown.
using E2E_Tests.TestData;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
using WebDriverManager.DriverConfigs.Impl;
using OpenQA.Selenium.Chrome;
using System.Configuration;
using NUnit.Framework.Interfaces;
[TearDown]
public void TearDown()
{
TakeScreenshotDefaultImageFormat();
driver.Close();
}
public void TakeScreenshotDefaultImageFormat()
{
if (TestContext.CurrentContext.Result.Outcome == ResultState.Error)
{
var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
var screenshotDirectoryPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "Screenshots\\");
if (!Directory.Exists(screenshotDirectoryPath))
{
Directory.CreateDirectory(screenshotDirectoryPath);
}
var currentDate = DateTime.Now;
var filePath = $"{screenshotDirectoryPath}{TestContext.CurrentContext.Test.Name}_{currentDate.ToString("yyyy.MM.dd-HH.mm.ss")}.png";
screenshot.SaveAsFile(filePath);
TestContext.AddTestAttachment(filePath);
}
}
Привет, рад узнать, что вы нашли решение этой проблемы! Пожалуйста, подумайте над тем, чтобы ответить на него и принять его как ответ, чтобы изменить его статус на «Отвечено». Смотрите можно я сам отвечу на свой вопрос Напоминаю :)