Лучший способ сделать скриншоты тестов в Selenium 2? - PullRequest
45 голосов
/ 27 июля 2010

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

Ответы [ 12 ]

65 голосов
/ 28 июля 2010

Чтобы сделать скриншоты в 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
31 голосов
/ 24 октября 2011
var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.com");
var ss = driver.GetScreenshot();   
ss.SaveAsFile("ss.png", System.Drawing.Imaging.ImageFormat.Png);
12 голосов
/ 17 июня 2011

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

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

Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
6 голосов
/ 04 декабря 2015

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

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

driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg);
2 голосов
/ 04 июня 2015
  1. Добавьте ссылку System.Drawing в ваше решение / проект.
  2. Используйте в своем тесте 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;
        }
    }
}
1 голос
/ 15 марта 2018

JAVA

protected void fullPageScreenshot(String testname) {
            String timeStamp = new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss").format(Calendar.getInstance().getTime());
            String imageName = testname + "-" + timeStamp + ".png";
            Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(2000))
                    .takeScreenshot(DriverManager.getDriver());
            try {
                ImageIO.write(screenshot.getImage(), "PNG", new File("./FullPage_Screenshots/" + imageName));
            } catch (Exception e) {
                System.out.println("Capturing FullPage Screenshot failed");
            }
        }

использовать библиотеку Ashot для создания полноэкранных скриншотов - даже там, где необходимо прокручивать страницы https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot/1.5.4

1 голос
/ 25 ноября 2015
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);
    }

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

0 голосов
/ 21 марта 2018

Определите это в глобальном коде:

var counter = DateTime.Now.Ticks.ToString();

((ITakesScreenshot)driver).GetScreenshot().SaveAsFile((snap +counter + ".jpg").ToString(), OpenQA.Selenium.ScreenshotImageFormat.Jpeg);
test.Log(LogStatus.Fail, "Snapshot below: " + test.AddScreenCapture(snap + counter + ".jpg"));
0 голосов
/ 14 марта 2018
driver.Url = "https://www.amazon.in/";
//Store image in bin folder
((ITakesScreenshot)driver).GetScreenshot().SaveAsFile("CurrentPage.png"); 
//Store image in D drive        
((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(@"D:\CurrentPage.png");
0 голосов
/ 20 ноября 2017
        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();

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

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