如何截取在硒中失败的webelement(部分屏幕而不是整个页面)的屏幕截图



如何截取在硒中失败的webelement(部分屏幕而不是整个页面(的屏幕截图。我尝试使用 Point 来定位 webelement 的位置,并 5aken 它工作的屏幕截图,但那是硬编码的,我想要一个运行时解决方案。例如,我一个网页有 3 个字段 2 个文本框和 1 个按钮,测试失败(任何失败,如找不到元素或元素被禁用(,由于第二个文本框,我想仅在运行时截取第二个文本框的屏幕截图。请帮忙

您可以使用名为 aShot 的第三方库。它可用于:

  • 在不同平台上截取WebElement的屏幕截图(即桌面浏览器, iOS模拟器移动野生动物园, 安卓模拟器浏览器(
  • 捕获整页屏幕截图。
  • 装饰屏幕截图
  • 提供灵活的屏幕截图比较

将此依赖项添加到您的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);
}

相关内容

  • 没有找到相关文章

最新更新