我想使用量角器拍摄元素的快照,量角器支持element.takeScreeshot()。但是,当我使用它时会抛出一些会话错误(下面)
walk into your room
What is the length of the left hand wall? 78
What is the length of front wall? 23
1794 cm² is the area of your room
错误
walk into your room
What is the length of the left hand wall? 78
What is the length of front wall? 23
1794cm² is the area of your room
答案 0 :(得分:2)
您可以截取整个页面,然后将图像裁剪为您想要的元素:
const fs = require('fs');
const PNG = require('pngjs').PNG;
var elem = element(by.model('model.username'));
promise.all([
elem.getLocation(),
elem.getSize(),
browser.takeScreenshot()
]).then(function(result) {
var src = PNG.sync.read(Buffer.from(result[2], 'base64'));
var dst = new PNG({width: result[1].width, height: result[1].height});
PNG.bitblt(src, dst, result[0].x, result[0].y, dst.width, dst.height, 0, 0);
fs.writeFileSync('out.png', PNG.sync.write(dst));
});
这将输出所选元素的.png图像。 如下所述,您需要确保元素在此之前在屏幕上;这是可以实现的:
var elem = element(by.model('model.username'));
browser.actions().mouseMove(elem).perform();
答案 1 :(得分:1)
正如@ suresh-salloju所说,它是一个新功能,即使在我的chromedriver 2.30和selenium 3.4.0上也会得到同样的答案。
如果您希望能够截取元素的屏幕截图,可以使用protractor-image-comparison。方法saveElement
或checkElement
可以帮助您进行测试。只需确保在视口中滚动元素。