In habe Node.js
ich den folgenden Code geschrieben, der funktioniert, aber nicht auf dem offiziellen WebDriverJS von Selen basiert, sondern auf SauceLabs's WebDriver
: WD.js und einer sehr kompakten Bildbibliothek namens EasyImage .
Ich möchte nur betonen, dass Sie den Screenshot eines Elements nicht wirklich machen können, aber Sie sollten zuerst den Screenshot der gesamten Seite machen, dann den Teil der Seite auswählen, den Sie mögen, und diesen bestimmten Teil zuschneiden:
browser.get(URL_TO_VISIT)
.waitForElementById(dependentElementId, webdriver.asserters.isDisplayed, 3000)
.elementById(elementID)
.getSize().then(function(size) {
browser.elementById(elementID)
.getLocation().then(function(location) {
browser.takeScreenshot().then(function(data) {
var base64Data = data.replace(/^data:image\/png;base64,/, "");
fs.writeFile(filePath, base64Data, 'base64', function(err) {
if (err) {
console.log(err);
}
else {
cropInFile(size, location, filePath);
}
doneCallback();
});
});
});
});
Und die cropInFileFunction sieht folgendermaßen aus:
var cropInFile = function(size, location, srcFile) {
easyimg.crop({
src: srcFile,
dst: srcFile,
cropwidth: size.width,
cropheight: size.height,
x: location.x,
y: location.y,
gravity: 'North-West'
},
function(err, stdout, stderr) {
if (err) throw err;
});
};