Selenium / Specflow / C # - сделать изображение base64 открытым в другой вкладке - PullRequest
0 голосов
/ 24 августа 2018

В настоящее время я использую Specflow и Selenium для автоматизации моего контроля качества.После каждого теста он генерирует отчет о степени и, когда во время теста возникает какая-либо ошибка, он делает снимок экрана и помещает ссылку на него прямо под сообщением, но когда я нажимаю на ссылку, он ничего не делает.Поэтому я должен щелкнуть по нему правой кнопкой мыши и открыть его на новой вкладке.Изображение кодируется на C # в формате base64.Может кто-нибудь сказать мне, как я могу сделать скриншот открытым на новой вкладке обычным щелчком левой кнопкой мыши?

Вот мой код:

else if (ScenarioContext.Current.TestError != null)
            {
                if (stepType == "Given")
                {
                    var gDriverHook = AssertDriverHook(DriverHook);
                    CapturaTela.ErrorScreenshot(AssertDriverHook(gDriverHook));
                    _scenario.CreateNode<Given>(ScenarioStepContext.Current.StepInfo.Text).Fail(ScenarioContext.Current.TestError.Message);
                    _scenario.CreateNode<Given>("Detalhes:").Fail("<a href =" + "data:image/jpeg;base64," + CapturaTela.ErrorScreenshot(gDriverHook) + ">" + "Clique Aqui para ver a Imagem" + "</a>");
                }

                else if (stepType == "When")
                {
                    var gDriverHook = AssertDriverHook(DriverHook);
                    CapturaTela.ErrorScreenshot(AssertDriverHook(gDriverHook));
                    _scenario.CreateNode<When>(ScenarioStepContext.Current.StepInfo.Text).Fail(ScenarioContext.Current.TestError.Message + " \n \n <a href =" + "data:image/jpeg;base64," + CapturaTela.ErrorScreenshot(gDriverHook) + ">" + "Clique Aqui para ver a Imagem" + "</a>");
                }

                else if (stepType == "Then")
                {
                    var gDriverHook = AssertDriverHook(DriverHook);
                    CapturaTela.ErrorScreenshot(AssertDriverHook(gDriverHook));
                    _scenario.CreateNode<Then>(ScenarioStepContext.Current.StepInfo.Text).Fail(ScenarioContext.Current.TestError.Message);
                    _scenario.CreateNode<Then>("Detalhes:").Fail("<a href =" + "data:image/jpeg;base64," + CapturaTela.ErrorScreenshot(gDriverHook) + ">" + "Clique Aqui para ver a Imagem" + "</a>");
                }
            }

И вот где мой метод Screenshot:

       public static string ErrorScreenshot(IWebDriver pDriver)
    {
        ITakesScreenshot screenshotDriver = pDriver as ITakesScreenshot;
        Screenshot screenshot = screenshotDriver.GetScreenshot();
        string base64 = screenshot.AsBase64EncodedString.Replace("\"\"", "");

        string ErrDirectory = "C:/Screenshot/err/";
        Directory.CreateDirectory(ErrDirectory);
        ErrDirectory = ErrDirectory + "Err_" + DateTime.Now.ToString("dd-MM-yyyy_HH-mm-ss");
        screenshot.SaveAsFile(ErrDirectory, ScreenshotImageFormat.Jpeg);

        return base64;
    }

Вот ссылка, по которой я пытаюсь нажать:

Here's the link I'm trying to click

...