【问题标题】:Allure AShot() screenshots in SeleniumSelenium 中的 Allure AShot() 截图
【发布时间】:2015-04-11 01:05:13
【问题描述】:

我正在尝试使用 Allure aShot() 类在我正在开发的网站上截取特定 WebElements 的屏幕截图,下面是我在 selenium 中使用的代码来实现它。 请访问此链接,其中显示了 aShot() 项目文档:

https://github.com/yandex-qatools/ashot

所以我的问题是,WebElement 的这些 AShot() 屏幕截图实际保存在哪里?我使用 testNG 执行以下方法并成功生成了魅力报告,但我在这些报告或我的框架中的任何地方都看不到这些屏幕截图。请检查下面的代码,很难确定这些图像的位置。

同样,我的基本问题是:我们如何指定 selenium 将 WebElement 的这些 AShot() 屏幕截图存储到我们想要的特定文件中?

我尝试将下面提到的 Screenshot 类转换为 BufferedImage 或 TakesScreenshot 类,并使用 ImageIO.write 或 FileUtils.copyFile 方法将这些图像复制到一个文件中并将这些图像存储在那里,但我收到一条错误消息,例如, “java.lang.ClassCastException: ru.yandex.qatools.ashot.Screenshot 无法转换为 org.openqa.selenium.TakesScreenshot”,我也尝试了其他方法,但均未成功。

请帮我解决这个问题,我们如何知道/指定这些 AShot() 屏幕截图的保存位置?

public WebDriver driver;

@Test
public void getAShotImage() {
  driver.get("http://....../");
  WebElement element = driver.FindElement(By.xpath(".............."));
  AShot shot = new AShot();
  shot.takeScreenShot(driver, element);

  OR

  shot.coordsProvider(new WebDriverCoordsProvider()).takeScreenshot(driver, element);

}

【问题讨论】:

    标签: java selenium screenshot allure yandex


    【解决方案1】:

    您可以通过从该方法返回字节数组来附加您的屏幕截图。看下面的例子:-

    @Attachment(value="Screenshot", type="image/png")
    private static byte[] captureScreenshot(Webdriver driver)
    {
        byte[] screenshot = null;
                screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
            }
      return screenshot
    }
    

    上面的代码没有使用 Ashot,但它显示了您需要如何附加文件。此外,如果您仍然无法看到您的屏幕截图,请检查您的步骤是否显示在您的报告中。如果没有,那么您可能缺少 javaagent,如 FAQ 中所述

    【讨论】:

    • 嗨,我之前已经在我的 POM 文件中指定了 javaagent,但它仍然没有在我的诱惑报告中显示附件或参数。我按照您提到的常见问题解答链接中提到的所有步骤进行操作,并通过指定 javaagent 重新进行操作,但它仍然无助于显示附件/参数/步骤。然而,我只能在魅力报告中看到功能和故事。
    • 如果没有步骤,那么问题肯定出在 javaagent 上。你是如何运行你的测试用例的?
    • 通过 Maven 项目中的 testNG 注释运行它们,如果这意味着什么,我尝试了 1.5 和 1.7 的项目编译器合规性级别。
    • 请按照示例中的说明使用 mvn test。如果您必须使用 testng eclipse 插件运行,请转到 window>preferences>testng>run debug> add -javaagent:{path to your aspect weaver jar}
    • 您好,非常感谢您迄今为止的帮助。然而,它仍然没有用。我通过 maven 执行了测试,还在 eclipse 中设置了 aspectjweaver 路径。这些附件/参数/步骤都没有出现在魅力报告中。我真的不知道我做错了什么,我已经在这个问题上工作了三天了:(
    【解决方案2】:

    AShot 返回Screenshot 对象,其中包含元素的图像和用于比较屏幕截图的信息。在这种情况下,您可以使用getImage() 方法来获取图像。

    new AShot().takeScreenshot(....).getImage();
    

    Screenshot 很快将包含字节数组而不是 BufferedImage

    【讨论】:

    • 嗨,我终于能够通过 maven 执行在诱惑报告中显示注释,但是在执行 testNG 时,注释(@Step、@Attachment、@parameters)根本没有显示。而且我只需要通过 testNG 执行我的所有测试。如果您能告诉我您对这个问题的看法,我将不胜感激。
    • @Manoj 这些注释需要 aspectJ。您使用的是哪个 IDE?
    • 您应该在 pom.xml 中指定 JVM argLine 和 aspectJ 代理,例如在 pom.xml 中的 maven-surefire-plugin 中进行构建配置。
    • 据我所知,最新的想法应该使用你的surefire maven插件配置(如果我错了你可以在构建配置中使用VM选项),对于eclipse你可以看到以下答案stackoverflow.com/questions/17757803/…
    • 是的,我以前做过,但是在我在 POM 文件中双引号 javaagent aspectjweaver 路径后它现在可以工作了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 2019-02-08
    • 2019-01-24
    • 2018-11-25
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多