Снимок экрана не снят с отчетом об экстенте версии 4 - Selenium C # - PullRequest
0 голосов
/ 30 апреля 2019

С версией 4 для отчета по экстентам, используя селеновый веб-драйвер C #, я не могу прикрепить скриншот к отчету.

Попробовал следующий, но тот же вопрос.

catch (Exception ex)
            {
_test.Log(Status.Fail, "Exception" + AssertionStatus.Error);                              
                _test.Info(ex.Message);
    _test.Fail("details", MediaEntityBuilder.CreateScreenCaptureFromPath("screenshot.png").Build());

    _test.Fail("details").AddScreenCaptureFromPath("screenshot.png");

}

Метод захвата скриншота, помещенный в OneTimeTearDown

общий захват строки (браузер IWebDriver, строка screenShotName) {

        try
        {
            Thread.Sleep(4000);
            ITakesScreenshot ts = (ITakesScreenshot)browser;
            Screenshot screenshot = ts.GetScreenshot();
            string pth = System.Reflection.Assembly.GetCallingAssembly().CodeBase;
            var dir = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin\\Debug", "");
            DirectoryInfo di = Directory.CreateDirectory(dir + "\\Defect_Screenshots\\");
            string finalpth = pth.Substring(0, pth.LastIndexOf("bin")) + "\\Defect_Screenshots\\" + screenShotName + ".png";
            localpath = new Uri(finalpth).LocalPath;
            screenshot.SaveAsFile(localpath);
        }
        catch (Exception e)
        {
            throw (e);
        }
        return localpath;
    }

Следующий код в TearDown, чтобы сделать снимок экрана для неудачных случаев.

public void AfterTest()
        {
            try
            {
                var status = TestContext.CurrentContext.Result.Outcome.Status;
                var stacktrace = "" + TestContext.CurrentContext.Result.StackTrace + "";
                var errorMessage = TestContext.CurrentContext.Result.Message;
                Status logstatus;
                switch (status)
                {
                    case TestStatus.Failed:
                        logstatus = Status.Fail;
                        string screenShotPath = Capture(ngDriver, TestContext.CurrentContext.Test.Name);
                        _test.Log(logstatus, "Test ended with " + logstatus + " – " + errorMessage);
                        _test.Log(logstatus, "Snapshot below: " + _test.AddScreenCaptureFromPath(screenShotPath));
                        break;
                    case TestStatus.Skipped:
                        logstatus = Status.Skip;
                        _test.Log(logstatus, "Test ended with " + logstatus);
                        break;
                    default:
                        logstatus = Status.Pass;
                        _test.Log(logstatus, "Test ended with " + logstatus);
                        break;
                }
            }
            catch (Exception e)
            {
                throw (e);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...