550 Stimmen

Wie kann ich mit Selenium WebDriver einen Screenshot erstellen?

Ist es möglich, einen Screenshot mit Selenium WebDriver zu erstellen?

(Anmerkung: Nicht Selenium-Fernbedienung )

553voto

Sergii Pozharov Punkte 16576

Java

Ja, das ist möglich. Das folgende Beispiel ist in Java:

WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
// Now you can do whatever you need to do with it, for example copy somewhere
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));

324voto

Corey Goldberg Punkte 56036

Python

Jeder WebDriver hat eine .save_screenshot(filename) Methode. Für Firefox kann sie also wie folgt verwendet werden:

from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://www.google.com/')
browser.save_screenshot('screenie.png')

Verwirrend ist, dass ein .get_screenshot_as_file(filename) Methode gibt es auch, die dasselbe tut.

Es gibt auch Methoden für: .get_screenshot_as_base64() (zum Einbetten in HTML) und .get_screenshot_as_png() (zum Abrufen von Binärdaten).

Und Hinweis dass WebElemente eine .screenshot() Methode, die ähnlich funktioniert, aber nur das ausgewählte Element erfasst.

120voto

jessica Punkte 1467

C#

public void TakeScreenshot()
{
    try
    {            
        Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
        ss.SaveAsFile(@"D:\Screenshots\SeleniumTestingScreenshot.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
        throw;
    }
}

87voto

Moiz Raja Punkte 5382

JavaScript (Selenium-Web-Treiber)

driver.takeScreenshot().then(function(data){
   var base64Data = data.replace(/^data:image\/png;base64,/,"")
   fs.writeFile("out.png", base64Data, 'base64', function(err) {
        if(err) console.log(err);
   });
});

71voto

sirclesam Punkte 1728

Rubinrot

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :ie
driver.get "https://www.google.com"
driver.save_screenshot("./screen.png")

Es sind weitere Dateitypen und Optionen verfügbar, die Sie unter Datei nimmt_bildschirmfoto.rb .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X