首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ashot Java堆空间错误

Ashot Java堆空间错误
EN

Stack Overflow用户
提问于 2019-12-11 01:09:44
回答 1查看 162关注 0票数 0

我想运行parralel截图测试,但有一个错误。我提高了Xmx和Xms,它们不会吃掉我的内存,我有32 my的内存。但它们在吃完它定义的内存后,会在随机点上失败。有没有内存优化的解决方案?我比较了一些PNG格式的18+图像,大约需要200-600-800kb

这是gradle.properties。

代码语言:javascript
复制
org.gradle.parallel=false
org.gradle.caching=false
org.gradle.console=verbose
org.gradle.jvmargs=-Xmx16g -Xms4g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
systemProp.junit.jupiter.execution.parallel.enabled=true
systemProp.junit.jupiter.execution.parallel.mode.default=concurrent
systemProp.junit.jupiter.execution.parallel.mode.classes.default=concurrent
systemProp.junit.jupiter.execution.parallel.config.strategy=dynamic
systemProp.junit.jupiter.execution.parallel.config.dynamic.factor=1

我的导入,有最新版本的库。

代码语言:javascript
复制
import ru.yandex.qatools.ashot.AShot;
import ru.yandex.qatools.ashot.Screenshot;
import ru.yandex.qatools.ashot.comparison.ImageDiff;
import ru.yandex.qatools.ashot.comparison.ImageDiffer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

和一些带有I find diff的代码

代码语言:javascript
复制
    protected int differenceBetweenPages(String pageName,
                                         String actualUrl,
                                         int scrollTime) throws IOException {
        open(actualUrl);
        actual = capturePage(scrollTime);
        ImageIO.write(actual.getImage(), "png", actualImg(pageName));

        attach = new FileInputStream(actualImg(pageName));
        Allure.addAttachment("Actual page", "image/png", attach, ".png");
        attach.close();

        expected = expectedScreenshot(pageName);
        diff = new ImageDiffer().makeDiff(expected, actual);
        ImageIO.write(diff.getMarkedImage(), "png", diffImg(pageName));

        attach = new FileInputStream(diffImg(pageName));
        Allure.addAttachment("Diff Page", "image/png", attach, ".png");
        attach.close();

        return diff.getDiffSize();
    }
EN

回答 1

Stack Overflow用户

发布于 2019-12-11 01:42:32

我在使用Ashot库时也遇到了问题。我转而使用ShutterBug,它工作得很好。https://github.com/assertthat/selenium-shutterbug

build.gradle代码段

代码语言:javascript
复制
compile 'com.assertthat:selenium-shutterbug:0.9.2'

用于捕获页面截图并将其附加到Allure报告的API

代码语言:javascript
复制
@Attachment(value = "Page screenshot", type = "image/png")
    public static byte[] captureScreenshot(WebDriver driver) {

        BufferedImage screenshot = Shutterbug.shootPage(driver, ScrollStrategy.WHOLE_PAGE, true).getImage();
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

        try {
            ImageIO.write(screenshot, "png", outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return outputStream.toByteArray();

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59272317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档