簡體   English   中英

Selenium中的Allure AShot()屏幕截圖

[英]Allure AShot() screenshots in Selenium

我正在嘗試用Allure aShot()類在我正在工作的網站上拍攝特定WebElement的屏幕截圖,下面是我在selenium中使用的實現此目的的代碼。 請訪問此鏈接,其中顯示aShot()項目文檔:

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

所以我的問題是,這些WebElement的AShot()屏幕截圖實際上保存在哪里? 我使用testNG執行以下方法,並成功生成了誘人的報告,但在這些報告或框架中的任何位置都看不到這些屏幕截圖。 請檢查以下代碼,查明這些圖像的位置非常困難。

再說一次,我的基本問題是:我們如何指定硒將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);

}

您可以通過從方法返回字節數組來附加屏幕截圖。 看下面的例子:

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

上面的代碼不使用Ashot,但是它顯示了如何附加文件。 另外,如果你仍然無法看到你的截圖,請檢查您的步驟都顯示在您的report.If不是那么很可能你缺少javaagent在討論常見問題解答

AShot返回Screenshot對象,該對象包含元素的圖像以及用於比較屏幕快照的信息。 在這種情況下,您可以使用getImage()方法獲取圖像。

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

Screenshot很快將包含字節數組而不是BufferedImage

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM