Вы можете использовать стороннюю библиотеку под названием aShot .Он может использоваться для:
- Делает снимок экрана WebElement на разных платформах (например, браузеры рабочего стола, iOS Simulator Mobile Safari, браузер эмулятора Android)
- Захват полностраничных скриншотов.
- Декорирует скриншоты
- Обеспечивает гибкое сравнение скриншотов
Добавьте эту зависимость к вашему pom.xml
:
<!-- https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot -->
<dependency>
<groupId>ru.yandex.qatools.ashot</groupId>
<artifactId>ashot</artifactId>
<version>1.5.3</version>
</dependency>
Теперь вы можете просто сделать скриншотпо:
public void takeScreenShotWhenFailed(WebDriver driver, WebElement webElement ){
Screenshot screenshot = new AShot().coordsProvider(new WebDriverCoordsProvider()).takeScreenshot(driver, webElement);
ImageIO.write(screenshot.getImage(),"PNG",new File(System.getProperty("user.dir") +"\\Images\\googleLogo.png"));
}
ОБНОВЛЕНИЕ : Чтобы определить, какой элемент не прошел программу, вы можете просто окружить каждый шаг блоком try-catch
, а в catch
вы можете вызвать screenshot
метод, например, так:
WebElement element;
try{
element = driver.findElement(By.id("id"));
element.click();
}catch(Exception e){
takeScreenShotWhenFailed(driver,element);
}