Подтвердить что ты не робот

Лучший способ сделать скриншоты тестов в Selenium 2?

Мне нужен способ сделать скриншоты моих функциональных тестов. Сейчас я использую Selenium 2 с привязками С#. Я очень хочу снять скриншот в конце теста, чтобы убедиться, что отображается желаемая страница. Есть ли какие-либо конкретные инструменты, которые вы, ребята, знаете о том, что я могу включить в свой код на С#, который вызовет скриншот? Я не смог найти встроенное решение Selenium 2 (не глядя на него).

4b9b3361

Ответ 1

Чтобы сделать скриншоты в Selenium 2, вам нужно сделать следующее

driver = new FireFoxDriver(); // Should work in other Browser Drivers
driver.Navigate().GoToUrl("http://www.theautomatedtester.co.uk");
Screenshot ss = ((ITakesScreenshot) driver).GetScreenshot();

//Use it as you want now
string screenshot = ss.AsBase64EncodedString;
byte[] screenshotAsByteArray = ss.AsByteArray;
ss.SaveAsFile("filename", ImageFormat.Png); //use any of the built in image formating
ss.ToString();//same as string screenshot = ss.AsBase64EncodedString;

Этот код должен работать, так как я быстро протестировал его в IronPython Repl. См. Код IronPython ниже

import clr
clr.AddReference("WebDriver.Common.dll")
clr.AddReference("WebDriver.Firefox.dll")
from OpenQA.Selenium import *
from OpenQA.Selenium.Firefox import *
driver = FirefoxDriver()
driver.Navigate().GoToUrl("http://www.theautomatedtester.co.uk")
s = driver.GetScreenshot()
s.AsBaseEncodedString
# HUGE string appears in the REPL

Ответ 2

var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.com");
var ss = driver.GetScreenshot();   
ss.SaveAsFile("ss.png", System.Drawing.Imaging.ImageFormat.Png);

Ответ 3

Я не знаю, имеет ли это значение, но мне пришлось бросать драйвер, когда я писал в С#.

что-то вроде:

Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();

Ответ 4

Просто используйте метод расширения TakeScreenshot() в одной строке кода.

IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("Your_Homepage_Url");

driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg);

Ответ 5

  • Добавьте ссылку System.Drawing в ваше решение/проект.
  • Используйте пространство имен System.Drawing.Imaging в вашем тесте.

Здесь я снимаю снимок экрана на главной странице Facebook.

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using NUnit.Framework;
using System.IO;
using System.Collections;
using System.Drawing.Imaging;

namespace FacebookRegistrationUsingC_Sharp
{
    [TestFixture]
    public class ScreenShot
    {
        IWebDriver driver = null;
        IWebElement element = null;

        [SetUp]
        public void SetUp()
        {
            driver = new ChromeDriver("G:\\Selenium_Csharp\\Jar\\chromedriver_win32");           
            driver.Navigate().GoToUrl("https://www.Facebook.com");
            driver.Manage().Window.Maximize();

        }
        [Test]
        public void TestScreenShot()
        {           

            Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
            ss.SaveAsFile("e:\\pande", System.Drawing.Imaging.ImageFormat.Jpeg);
        }

        [TearDown]
        public void TearDown()
        {
            driver = null;
            element = null;
        }
    }
}

Ответ 6

public void TakeScreenshot(string saveLocation) {
        var location = GetPath() + _name + "\\" + saveLocation + ".png";
        var ssdriver = _driver as ITakesScreenshot;
        var screenshot = ssdriver.GetScreenshot();
        screenshot.SaveAsFile(location, ImageFormat.Png);
    }

Этот код поможет вам сделать снимок экрана

Ответ 7

Используйте ссылку System.Drawing.Imaging. Следующий код можно использовать для снятия снимков экрана.

IWebDriver driver = new FirefoxDriver();
ITakesScreenshot screenshotDriver = driver as ITakesScreenshot;
Screenshot screenshot = screenshotDriver.GetScreenshot();
String fp = "D:\\" + "snapshot" + "_"+ DateTime.Now.ToString("dd_MMMM_hh_mm_ss_tt") + ".png";
screenshot.SaveAsFile(fp, ImageFormat.Png);

Примечания: Временная метка имеет два преимущества: 1) Вы узнаете идеальный DateTime, когда будет снят снимок экрана. 2) Функция SaveAsFile перезаписывает существующий файл. Таким образом, DateTime может помочь для создания разных файлов.

Ответ 8

        ScreenCaptureJob scj;
        scj = new ScreenCaptureJob();
        // Specify the path & file name in which you want to save         
        scj.OutputScreenCaptureFileName = @"C:\Users\jpavankumar\Desktop\Screencaptuere\ScreenRecording4.wmv";
        // Start the Screen Capture Job
        scj.Start(); scj.Stop();

Попробуйте этот код здесь... надеюсь, вам это будет полезно....!

Ответ 9

Используя селен, было два вызова, с которыми я знаком: captureEntirePageScreenshot и captureScreenshot. Возможно, вам захочется заглянуть в эти призывы, чтобы убедиться, что они выполнит то, что вам нужно.