Нужны входные данные: можно ли сделать скриншот после каждого шага теста в селене c # - PullRequest
0 голосов
/ 26 сентября 2019

Есть ли какой-нибудь подход к созданию скриншота после каждой проверки Assert?Снимок экрана должен быть сделан независимо от того, прошел ли он или нет.

* 1002.

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Да, вы можете использовать Driver.TakeScreenshot();

Вам нужно будет найти путь к файлу, чтобы сохранить скриншот и сохранить файл.

var screenshot = Driver.TakeScreenshot();
var filePathToSave = "C:\\Users\\YourFilePathHere";

// format as .png
screenshot.SaveAs(filePathToSave, ImageFormat.Png);

Я рекомендую обертываниеэто в методе и вызывая его всякий раз, когда вам нужно:

public void TakeScreenshot()
{
    var screenshot = Driver.TakeScreenshot();
    var filePathToSave = "C:\\Users\\YourFilePathHere";

    // format as .png
    screenshot.SaveAs(filePathToSave, ImageFormat.Png);
}

Затем вы можете использовать его после Assert, например:

Assert.IsTrue(something);
Driver.TakeScreenshot();

Вам также потребуется обработатьслучай, когда ваш оператор Assert завершился неудачей, поэтому вам нужно будет реализовать его и в методе [TearDown], чтобы гарантировать, что снимок экрана будет получен даже в случае неудачи теста:

    [TearDown]
    public void TearDown()
    {
        // take screenshot
        TakeScreenShot();

        // close and quit driver
        Driver.Close();
        Driver.Quit();
    }
0 голосов
/ 27 сентября 2019

Если вы используете Nunit.Он поддерживает несколько утверждений.

Выдержка из документации (https://github.com/nunit/docs/wiki/Multiple-Asserts)

Блок множественных утверждений может содержать любой произвольный код, а не только утверждения.

Несколько утвержденийблоки могут быть вложенными. Отказ не сообщается до тех пор, пока не завершится выход из самого внешнего блока.

Если код в блоке вызывает метод, этот метод может также содержать несколько блоков подтверждения.

ПримерИспользование:

[Test]
public void ComplexNumberTest()
{
     ComplexNumber result = SomeCalculation();
     Assert.Multiple(() =>
     {
         Assert.AreEqual(5.2, result.RealPart, "Real part");
         Assert.AreEqual(3.9, result.ImaginaryPart, "Imaginary part");
     });
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...