Я использую intern.js для тестирования веб-приложения. Я могу выполнять тесты и создавать скриншоты, когда они терпят неудачу. Я хочу создать скриншот для определенного элемента, чтобы выполнить некоторое регрессионное тестирование CSS с помощью таких инструментов, как resemble.js. Является ли это возможным? Как я могу сделать? Спасибо!Как сделать снимок экрана элемента DOM с помощью intern js?
0
A
ответ
0
driver.get("http://www.google.com");
WebElement ele = driver.findElement(By.id("hplogo"));
//Get entire page screenshot
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
BufferedImage fullImg = ImageIO.read(screenshot);
//Get the location of element on the page
Point point = ele.getLocation();
//Get width and height of the element
int eleWidth = ele.getSize().getWidth();
int eleHeight = ele.getSize().getHeight();
//Crop the entire page screenshot to get only element screenshot
BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(), eleWidth,
eleHeight);
ImageIO.write(eleScreenshot, "png", screenshot);
//Copy the element screenshot to disk
File screenshotLocation = new File("C:\\images\\GoogleLogo_screenshot.png");
FileUtils.copyFile(screen, screenshotLocation);
Взятый с here.
1
Существует не встроенный способ сделать это с Интернационалом. Метод takeScreenshot
просто вызывает службу скриншотов Selenium, которая возвращает скриншот всей страницы в виде PNG с кодировкой базы 64. Intern's takeScreenshot
преобразует это в буфер узла, прежде чем передать результат пользователю.
Для обрезки изображения вам потребуется использовать внешнюю библиотеку или инструмент, например png-crop (обратите внимание, что я этого никогда не использовал). Код может выглядеть следующим образом (непроверенный):
var image;
var size;
var position;
return this.remote
// ...
.takeScreenshot()
.then(function (imageBuffer) {
image = imageBuffer;
})
.findById('element')
.getSize()
.then(function (elementSize) {
size = elementSize;
})
.getPosition()
.then(function (elementPosition) {
position = elementPosition;
})
.then(function() {
// assuming you've loaded png-crop as PNGCrop
var config = {
width: size.width,
height: size.height,
top: position.y,
left: position.x
};
// need to return a Promise since PNGCrop.crop is an async method
return new Promise(function (resolve, reject) {
PNGCrop.crop(image, 'cropped.png', config, function (err) {
if (err) {
reject(err);
}
else {
resolve();
}
});
});
})
Смежные вопросы
- 1. Как сделать снимок экрана с помощью Sikuli?
- 2. Как сделать снимок экрана с помощью VBA?
- 3. Как сделать снимок экрана с помощью FrameBuffer?
- 4. как сделать снимок экрана с помощью php?
- 5. html2canvas сделать снимок экрана элемента DIV?
- 6. Как сделать снимок с экрана?
- 7. как сделать снимок экрана?
- 8. Сделайте снимок экрана элемента
- 9. Сделать снимок экрана
- 10. Невозможно сделать снимок экрана с помощью C#
- 11. Как сделать снимок экрана с селеном и синхронным JS
- 12. Как сделать снимок экрана терминала
- 13. Как сделать снимок экрана ImageView?
- 14. C: сделать снимок экрана
- 15. сделать снимок экрана (с корнем)
- 16. Как сделать снимок экрана перетаскиваемых элементов с помощью html2canvas
- 17. сделать снимок экрана
- 18. Как сделать снимок экрана с веб-страницы с помощью Javascript
- 19. Как сделать снимок экрана с сайта MVC?
- 20. Как сделать снимок экрана с указанного сайта?
- 21. Как сделать снимок экрана с преобразованием?
- 22. Как сделать снимок экрана с FireMonkey (многоплатформенные)
- 23. Как сделать снимок экрана с макетом под
- 24. Как сделать снимок экрана с сайта golang?
- 25. Как сделать снимок экрана программно с Lollipop
- 26. Как сделать снимок экрана с узлом-webkit
- 27. Как сделать снимок экрана с холста?
- 28. Как сделать снимок экрана с низким качеством
- 29. Можно ли сделать снимок экрана рендеринга DOM на стороне сервера?
- 30. Как сделать снимок экрана из HTML-формы?
спасибо, я буду использовать что-то вроде WebdriverCSS, способного делать то, что мне нужно. – scosmaa
Интересно, я не видел WebDriverCSS. Фактически мы работаем над обновлением для тестирования регрессии для Intern, поэтому этот вид операции может стать немного проще в будущем. – jason0x43
Как импортировать модуль node.js (PNGCrop) в тестовый модуль Intern? – Shrike