当前位置: 首页 > article >正文

测开笔记--Typescript: 文件复制到指定目录

开发背景:

        自动化开发语言使用的是TypeScript;框架用的是playwright。有个测试脚本需要先将几个文件复制粘贴到新建的项目文件夹下,系统会读取该文件,然后生成页面信息。

关键字:文件复制粘贴; 新建的项目文件夹。

面临的文件:

        1. 文件的复制粘贴应该使用什么方法

        2. 动态的文件夹路径应该如何获取。

解决方案:

        1. 文件的组织粘贴,使用的是fs库、path库。首先生成fs、path库的对象。这两个库属于默认就存在的文件,不需要再导入了【我印象是,如果有问题评论区反馈吧】

public fs = require("fs")

public path = require("path")

然后生成源文件的文件路径,路径分成2部分:文件夹 + 文件名。定义两个名称:

public rootPath: string = "../../test/path/"  

public fileName: string = "test.txt"

补充说明: “../../”这个是文件夹相对于类文件的路径。可以认为是回退几个文件夹。不理解的可以查查文件夹相对路径相关的内容或者评论区提问。

然后使用path库下的join方法,可以将两个路径拼接成一个路径:

let rootFilePath = this.path.join(this.rootPath, this.fileName)

这样就得到了源文件的路径。

同理获取目标文件路径。但是由于目标文件是动态获取的,已知获取的位置为用户目录的Document文件夹下。

这里使用process.env.USERPROFILE来定位用户目录,完整代码如下:

文件夹路径:

let targetPath: string = process.env.USERPROFILE + "\\Documents\\Test\\"

生成的目标文件路径:

let targetFilePath: string = this.path.join(this.targetPath, this.fileName)

        2. 生成了两个路径后,使用fs库下的copyFile方法,可以将源文件复制到目标文件

this.fs.copyFile(this.path.resolve(__dirname, rootFilePath), targetFilePath, (err) => {

        if(erro) throw err;

})

回顾下:自动化测试过程中针对文件的处理不常见,所以一开始面临这种问题的时候,需要查询下对应开发语言对于文件、文件夹、文件操作的库和方法,然后针对性的使用,因为比较少见,所以以笔记的形式记录一下。

完整代码如下:

class projectHelper{

        public rootPath: string = "../../test/path"

        public targetPath: string = this.path.join(this.targetPath, this.fileName)    

        public fileName: string = "test.txt"

        public fs = require('fs')

        public path = require("path")

        async copyPathFile(){

                this.targetFilePath = this.path.join(this.targetPath, this.fileName)

                this.rootFilePath = this.path.join(this.rootPath, this.fileName)

                this.fa.copyFile(this.path.resolve(__dirname, jsonFileRootPath), jsonFileTargetPath, (err) => {

                        if(err) throw err;

                })

        }

}


http://www.kler.cn/news/148073.html

相关文章:

  • 什么手机30万?VERTU唐卡手机顶配56.8万
  • PGP 遇上比特币
  • 【LeeCode】209.长度最小的子数组
  • 大数据平台/大数据技术与原理-实验报告--实战HDFS
  • java stream流map和flatmap的区别
  • 小内存服务器生存指南 ——SWAP 虚拟内存
  • 【GCC】2:chatgpt:SendSideBandwidthEstimation
  • 【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
  • springboot实现数据脱敏
  • 排序算法--快速排序
  • 排序算法:归并排序、快速排序、堆排序
  • QTextEdit 是 Qt 框架中的一个类,用于显示和编辑多行文本内容的可编辑部件
  • 本地开启https,配置nodeJs服务
  • 基于C#实现并查集
  • 华为鸿蒙开发(HarmonyOs开发):超详细的:DevEco Studio 的安装和配置 、华为第三方包依赖:SDK软件包的安装、Nodejs的导入配置
  • 漏洞复现--致远 M3 反序列化 mobile_portal RCE
  • 同旺科技 USB 转 RS-485 适配器 -- 隔离型
  • 钉钉直播不了检查防火墙配置没有拦截应用测试直通都放行的,电脑还可以ping通直播域名,就是开始不了直播
  • Docker Swarm总结+Jenkins安装配置与集成(5/5)
  • Spring代理方式之静态、动态代理(JDK和CGlib动态代理)
  • 解决ansible批量加入新IP涉及known_hosts报错的问题
  • Linux学习笔记6-串口应用
  • OpenJudge NOI 1.8 16:矩阵剪刀石头布 c语言
  • SpringBoot趣探究--1.logo是如何打印出来的
  • 抖音视频如何无水印下载,怎么批量保存主页所有视频没水印?
  • Linux下unzip解压乱码问题的解决
  • Go 中切片(Slice)的长度与容量
  • spring JdbcTemplate 快速入门
  • JavaScript创建枚举
  • 解决:javax.websocket.server.ServerContainer not available 报错问题