12

Was ist die korrekte Art, einen Screenshot zu erstellen, wenn ein Webdriver-Test mit Selenium's webdriverjs ausgeführt wird?Korrekte Syntax zum Erstellen von Screenshots mit Selenium's WebDriverJs auf Knoten

Ich habe den Stand-alone-Selen-Server gestartet und ich kann der Befehl für die Aufnahme Screenshot sehen auf dem Selen-Server angemeldet ist, aber der Screenshot nicht gespeichert wird.

Mein Code ist folgende:

var webdriver = require('selenium-webdriver'); 
var driver = new webdriver.Builder().usingServer('http://localURL:4444/wd/hub').withCapabilities({'browserName': 'chrome'}).build(); 
driver.get([URL to webserver on my local machine]) 

driver.takeScreenshot("c:\\selenium_local_map\\out1.png"); 

Antwort

22

Nimm Screenshot gibt ein Versprechen, das mit einem Base64 codiert png lösen wird. Um die Daten zu schreiben, müssen Sie so etwas wie die folgenden Funktionen ausführen:

function writeScreenshot(data, name) { 
    name = name || 'ss.png'; 
    var screenshotPath = 'C:\\selenium_local_map\\'; 
    fs.writeFileSync(screenshotPath + name, data, 'base64'); 
}; 

driver.takeScreenshot().then(function(data) { 
    writeScreenshot(data, 'out1.png'); 
}); 

Weitere Dokumentation here gefunden werden kann

+4

Das ist genial, danke! Wollte nur hinzufügen für Kollegen Knoten n00bs, die kopieren und einfügen dies dann fragen, was zu tun, um den resultierenden Fehler - fügen Sie Folgendes in Zeile 2: var fs = require ('fs'); – kjc26ster

+1

Damit dieser Code funktioniert, müssen Sie folgende Zeile einfügen: var fs = require ('fs'); Ich verbrachte einige Zeit damit, herauszufinden, worum es bei "fs" ging. Sie müssen das Paket installieren, dann wird diese Lösung funktionieren: _italic_ npm install fs _italic_ –