En Node.js
, escribí el siguiente código que funciona pero no se basa en el WebDriverJS oficial de selenium, sino en SauceLabs's WebDriver
: WD.js y una biblioteca de imágenes muy compacta llamada EasyImage .
Solo quiero enfatizar que realmente no puede tomar la captura de pantalla de un elemento, pero lo que debe hacer es primero, tomar la captura de pantalla de toda la página, luego seleccionar la parte de la página que le gusta y recortar esa parte específica:
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();
});
});
});
});
Y la función cropInFileFunction, es así:
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;
});
};