Trong Node.js
, tôi đã viết đoạn mã sau đây hoạt động nhưng nó không dựa trên WebDriverJS chính thức của selen, mà dựa trên SauceLabs's WebDriver
: WD.js và một thư viện hình ảnh rất nhỏ gọn có tên là EasyImage .
Tôi chỉ muốn nhấn mạnh rằng bạn không thể thực sự chụp ảnh màn hình của một phần tử nhưng điều bạn nên làm là trước tiên, chụp ảnh màn hình của toàn trang, sau đó chọn phần của trang bạn thích và cắt phần cụ thể đó:
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();
});
});
});
});
Và cropInFileFunction, sẽ như thế này:
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;
});
};