Sur Node.js
J'ai écrit le code suivant qui fonctionne mais qui n'est pas basé sur le WebDriverJS officiel de Selenium, mais sur SauceLabs's WebDriver
: WD.js et une bibliothèque d'images très compacte appelée EasyImage .
Je tiens à souligner que vous ne pouvez pas vraiment prendre la capture d'écran d'un élément, mais ce que vous devez faire, c'est d'abord prendre la capture d'écran de la page entière, puis sélectionner la partie de la page que vous aimez et recadrer cette partie spécifique :
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();
});
});
});
});
Et le cropInFileFunction, va comme ça :
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;
});
};