如何截取在 selenium 中失败的 webelement(部分屏幕而不是整个页面)的屏幕截图。我尝试使用 Point 来定位 webelement 的位置并 5aken 它工作的屏幕截图,但这是硬编码的,我想要一个运行时解决方案。例如,我的网页有 3 个字段 2 个文本框和 1 个按钮,由于第二个文本框,我想仅在运行时截取第二个文本框的屏幕截图,因此测试失败(任何失败,如找不到元素或元素被禁用)。请帮忙
问问题
432 次
1 回答
1
您可以使用名为aShot的第三方库。它可用于:
- 在不同平台(即桌面浏览器、iOS Simulator Mobile Safari、Android Emulator Browser)上截取 WebElement 的屏幕截图
- 捕获整页屏幕截图。
- 装饰截图
- 提供灵活的屏幕截图比较
将此依赖项添加到您的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);
}
于 2019-06-11T07:30:33.077 回答