当前位置: 首页 > 知识库问答 >
问题:

我可以使用Java在appium中截图并粘贴到word文件中吗?

长孙和悦
2023-03-14

我目前正在使用下面的方法拍摄截图,并将它们存储在一个名为“screenshots”的文件夹中。但我想要的是,将这些截图根据它们所属的测试用例粘贴到word文档中。有可能吗?如果是这样的话,有人能给我指路吗?

public  String FailureScreenshotAndroid(String name) {
            try {
                Date d = new Date();
                String date = d.toString().replace(":", "_").replace(" ", "_");
                TakesScreenshot t = (TakesScreenshot)driver;
                File f1 = t.getScreenshotAs(OutputType.FILE);//Temporary Location
                String permanentLocation =System.getProperty("user.dir")+ "\\Screenshots\\"+name+date+".png";
                File f2 = new File(permanentLocation);
                FileUtils.copyFile(f1, f2);
                return permanentLocation;
            }catch (Exception e) {
                String msg = e.getMessage();
                return msg;
            }
        }

共有1个答案

宋飞文
2023-03-14

尝试如下:

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.concurrent.TimeUnit;
import javax.imageio.ImageIO;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFRun;

public class TakeScreenshots {

    public static void main(String[] args) {
        try {

            XWPFDocument docx = new XWPFDocument();
            XWPFRun run = docx.createParagraph().createRun();
            FileOutputStream out = new FileOutputStream("d:/xyz/doc1.docx");

            for (int counter = 1; counter <= 5; counter++) {
                captureScreenShot(docx, run, out);
                TimeUnit.SECONDS.sleep(1);
            }

            docx.write(out);
            out.flush();
            out.close();
            docx.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void captureScreenShot(XWPFDocument docx, XWPFRun run, FileOutputStream out) throws Exception {

        String screenshot_name = System.currentTimeMillis() + ".png";
        BufferedImage image = new Robot()
                .createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
        File file = new File("d:/xyz/" + screenshot_name);
        ImageIO.write(image, "png", file);
        InputStream pic = new FileInputStream("d:/xyz/" + screenshot_name);
        run.addBreak();
        run.addPicture(pic, XWPFDocument.PICTURE_TYPE_PNG, screenshot_name, Units.toEMU(350), Units.toEMU(350));
        pic.close();
        file.delete();
    }

}
 类似资料:
  • 需要使用剪贴板操作将字符串值粘贴到WebElement

  • 问题内容: 有没有办法在JavaScript中拦截粘贴事件并获取原始值,对其进行更改并将关联的DOM元素的值设置为修改后的值? 例如,我有一个用户试图复制并粘贴带空格的字符串,并且字符串的长度超过了我的文本框的最大长度。我想截取文本,删除空格,然后使用更改值设置文本框的值。 这可能吗? 问题答案: 您可以通过附加“ onpaste”处理程序来拦截粘贴事件,并通过在IE中使用“ ”或在其他浏览器中使

  • 我已经使用这个网站一段时间了,通常研究我所有的问题,但这一个已经让我难倒了几天。 我有一个Excel工作簿的工作表,将允许用户输入特定的数据,一旦宏被使用,将创建一个Word文档的格式专门为每个宏。

  • 问题内容: 有什么方法可以使用Java API将图像文件存储在Firebase中以用于android应用程序? 我已阅读此线程,可以使用JavaAPI将图像文件存储在Firebase中,但仍然没有答案。我知道有一个官方的api,称为firepano,这里是链接https://github.com/firebase/firepano,但这是Java语言库的链接。 Java库有什么解决方案吗? 问题答

  • 问题内容: 有什么方法可以使用Java API在Firebase中存储图像文件? 问题答案: 尝试使用以下代码段: 并用于检索