WebDriver에서 특정 웹 영역을 캡처하는 방법
public byte[] takeScreenshot() throws IOException {
TakesScreenshot takesScreenshot = (TakesScreenshot) driver;
return takesScreenshot.getScreenshotAs(OutputType.BYTES);
}
이렇게 만들어진 사진은 전체 웹 페이지다.그러나 때때로 우리는 전체 웹 페이지를 필요로 하지 않고, 단지 특정한 웹 Element만 필요로 해서 약간의 방해를 피할 수 있다.WebDriver 자체는 이러한 API를 제공하지 않지만, 우리가 직접 할 수 있는 것은 바로 전체 화면의 캡처에서 다시 재단하는 것이다. 다음과 같다.
public BufferedImage createElementImage(WebElement webElement)
throws IOException {
// webElement 。
Point location = webElement.getLocation();
Dimension size = webElement.getSize();
// 。
BufferedImage originalImage =
ImageIO.read(new ByteArrayInputStream(takeScreenshot()));
// webElement 。
BufferedImage croppedImage = originalImage.getSubimage(
location.getX(),
localtion.getY(),
size.getWidth(),
size.getHeight());
return croppedImage;
}
여기서 ImageIO와 BufferedImage는 각각 javax에서 가져옵니다.imageio와java.awt.image.이런 방법은 캡처의 크기를 잘 줄일 수 있고 일부 불확정 요소(예를 들어 날짜와 시간 등)를 피할 수 있으며 테스트에서 캡처를 저장하는 좋은 방식이다.
참고: 테스트된 웹 페이지에 iframe이 포함되어 있으면 더 복잡한 방식으로 WebElement의 위치를 계산해야 합니다웹 페이지의 어떤 요소의 위치를 계산하다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
appium을 iOS의 실제 기기에서 사용할 때까지의 순서·방법appium을 iOS의 실제 기기로 움직이기까지의 순서입니다. 사용환경 사용 환경은 다음과 같습니다. Xcode, command line tools는 설치된 것으로 합니다. Mac OS Catalina(10.15.2...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.