웹 응용 프로그램을 테스트하기 위해 intern.js을 사용하고 있습니다. 테스트를 실행하고 실패 할 때 스크린 샷을 만들 수 있습니다. resemble.js 같은 도구를 사용하여 CSS 회귀 테스트를 수행하기 위해 특정 요소에 대한 스크린 샷을 만들고 싶습니다. 가능한가? 어떻게해야합니까? 고맙습니다!인턴 즈를 사용하여 DOM 요소의 스크린 샷을 찍으려면 어떻게해야합니까?
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
메서드는 전체 페이지의 스크린 샷을 base-64로 인코딩 된 PNG로 반환하는 Selenium의 스크린 샷 서비스를 호출하기 만합니다. 인턴의 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();
}
});
});
})
감사합니다. 필요한 것을 수행 할 수있는 WebdriverCSS와 같은 것을 사용하겠습니다. – scosmaa
흥미 롭다면 WebDriverCSS를 보지 못했습니다. 우리는 실제로 Intern의 시각적 회귀 테스트 업데이트를 진행하고 있습니다. 따라서 이러한 유형의 작업은 앞으로 조금 더 쉬워 질 수 있습니다. – jason0x43
인턴 테스트 모듈에서 node.js 모듈 (PNGCrop)을 가져 오는 방법은 무엇입니까? – Shrike