首页 > 其他分享 >模拟在页面点击导入csv

模拟在页面点击导入csv

时间:2024-04-20 09:02:39浏览次数:20  
标签:文件 code url 校验 导入 csv 页面

  • 案例背景

组件性能测试过程中,要导入大量自定义的数据。

  • 案例分析

本案例中采用python的pandas库,模拟了生成导入csv文件,模拟在页面点击导入csv,使文件导入更高效。

  • 实现方案

1****、在前端页面解析内部接口参数

典型的导入流程至少包含上传文件和确认上传。

  • 上传文件

在浏览器中打开F12,进入Network,点击文件上传并选择填好的文件,可以采集到请求过程中的参数如下:

内部接口地址Request URL:

http://10.1.1.18/ui/person/import

请求头Request Headers中:

Accept-Encoding: gzip, deflate

Content-Type: multipart/form-data;

Cookie: JSESSIONID=B1E48114C18B15DA7064E55D0706AC30; CASTGC=TGT-4-mfFXZJr9k2VPxsbBinEqgOliUqecTeQWNPekXdHPcUEtryXaJ7-cas

请求参数:

organizationId: 1

language: zh_cn

file: (binary)

2、确认上传

待导入文件校验完成后,点击导入,可以采集到确认上传的参数如下:

内部接口地址Request URL:

http://ip/ui/person/save

请求头Request Headers中:

Accept-Encoding: gzip, deflate

Content-Type: application/json;charset=UTF-8;

Cookie: JSESSIONID=B1E48114C18B15DA7064E55D0706AC30; CASTGC=TGT-4-mfFXZJr9k2VPxsbBinEqgOliUqecTeQWNPekXdHPcUEtryXaJ7-cas

请求参数:

code: "f82bf0f1-9005-491c-a58b-631d8552f3c8"

flag: 1

orgCode: ""

其中code表示/person/import接口的返回参数校验任务Id

2****、用脚本模拟导入过程

文件导入的校验中有数据库的唯一性校验,字段校验,用python脚本可以方便的构造需要格式的csv

1、构造csv

生成随机的身份证号,大概率唯一。

引入pandas计算库,构造DataFrame数据类型,并保证到csv文件中,csv文件需要以gbk格式写入。
def to_csv():

personList=[]

personList.append(["姓名:1~32个字符;不能包含 ' / : * ? "" < > | 这些特殊字符。"])

for i in range(10001):        code=str(random.randint(100000,999999))+str(random.randint(1950,1999))+'0'+str(random.randint(0,9))+'0'\

+str(random.randint(0,9))+str(100000+i)

personList.append(["测试_"+str(i),"1","默认组织","111",code,code,13165867896])

print(personList)

data1 = pd.DataFrame(personList)

path=r'peson.csv'

file=open(path, 'w+', encoding='utf-8')

data1.to_csv(sep=',', encoding='gbk',index=False, header=False,path_or_buf=path)

2、上传文件

前后端交互采用的是接口模式,在Header中加入Cookie即可模拟登录,不会被单点登录拦截。

将上一步生成的csv文件打开,作为/ui/person/import接口的file参数传入,请post方式请求。
def importPersonFromCsv():

global code

url = '=/ui/person/import'

param = ''

user_url = 'http://' + ip + url+param

print(user_url)

# 我们操作文件上传的时候,把目标文件以open打开,PersonImport.csv

files = [('file', ('peson.csv',open('peson.csv', 'rb'),'application/vnd.ms-excel'))]

data = {"organizationId": "1", "language": "zh_cn"}
     headers = {'Accept-Encoding': 'gzip, deflate',
               'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36', 'Cookie': cookie}

r = requests.post(user_url,data,files=files,headers=headers)

print(r.text)

code = r.json().get('data')

print(code)

return code

3、确认导入

待文件上传完成、校验完成后,才能调用确认导入接口,否则会报错。请求头中Content-Type需要为application/json;charset=UTF-8,传入有效cookie,保证不会被拦截。
def saveImportPerson():

url = '/ui/person/'

param = ''

user_url = 'http://' + ip + url+param

print(user_url)

data = json.dumps({"flag": 1,"code": code,"orgCode":""})

headers = {'Accept-Encoding': 'gzip, deflate',

'Content-Type': 'application/json;charset=UTF-8',

'Cookie': cookie}

r = requests.post(user_url,data=data,headers=headers)

print(r.text)

  • 结束语

1、文件校验是异步过程,上传文件接口返回数据不能保证校验完成,可以等待若干秒后,确认导入必须在校验完成后调用。

标签:文件,code,url,校验,导入,csv,页面
From: https://www.cnblogs.com/bigleft/p/18147151

相关文章

  • 一个静态页面接入科大讯飞3.5AI
      静态文件html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="......
  • UE虚幻引擎CSV转Excel
    #CSV转Excel>-数据表导入/导出Excel用法>-####物品数据表导出CSV>>-描述:我导出的文件名字物品数据表.csv作为案例大家可以随意名字,记得备份一份导出的物品数据表.csv>>  --->-####打开Excel>>-点击数据->从文本/CSV->物品数据表.csv//物品数据表导......
  • el-transffer大数据量页面卡顿优化
    Elementtransfer组件数据量大卡顿优化&&添加虚拟滚动,几万以内的数据量不会卡顿,用法和element的el-transfer完全一样安装npminstallel-virtual-transfer--save使用importElTransferVirtualfrom'element-transfer-virtual';1、组件内注册一下comp......
  • 今天依然是写前端的一天--前端页面的搭建
    <!--Login.vue--><scriptsetup>import{User,Lock}from'@element-plus/icons-vue'import{ref}from'vue'//控制注册与登录表单的显示,默认显示注册constisRegister=ref(false)//定义数据模型constregisterData=ref({username:'&#......
  • 这个网络爬虫代码,拿到数据之后如何存到csv文件中去?
    大家好,我是皮皮。一、前言还是昨天的那个网络爬虫问题,大佬们,帮忙看看这个网络爬虫代码怎么修改?那个粉丝说自己不熟悉pandas,用pandas做的爬虫,虽然简洁,但是自己不习惯,想要在他自己的代码基础上进行修改,获取数据的代码已经写好了,就差存储到csv中去了。他的原始代码如下:importreq......
  • thinkphp 页面寻址
    http://laremehpe.test.org/index.php/index/user/indexhttp://laremehpe.test.org:  url地址      /index.php:  public目录下的入口文件         /index:    application目录下的文件夹名字如果没有文件夹则忽略        /user: ......
  • 实验一-原型设计 微信卡包页面
    微信卡包页面-原型设计分享一、实验题目:原型设计二、实验目的:掌握产品原型设计方法和相应工具使用。三、实验要求 对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点(至少3条)。1.墨刀:  ~适用领域:墨刀适用于快速原型设计和协作,特别是在移动应用和网页......
  • h5 自适应页面背景图无法自动适应的问题
     有时候制作好自适应页面,上面用的是背景图,发现在手机中,宽度会出现不能100%显示的问题,虽然样式中我们使用了width为100%。加入以下语句<html><head><metaname="viewport"content="width=1200px">当只设置width属性值,而不指定initial-scale属性值时,大多数浏览器......
  • 常见问题——VS调试出现:未加载mscorlib.pdb 的页面
    问题:VS在调试程序的时间,出现单独一个报错页面:未加载mscorlib.pdbmscorlib.pdb包含查找模块mscorlib.dll的源文件所需的调试信息解决方法:点击调试=>选项=>调试=>勾选:常规点击启用我的代码=》勾选:启用时若没有用户代码则发出警告(仅限托管)参考:https://www.cnblogs.com/Can-da......
  • 通过前端事件获得控件所在页面html
    //输入框获取焦点事件functionhandleInputFocus(){ console.log('handleInputFocus2',event); letpgHtml=$(event.target).prop('ownerDocument').body.innerHTML;//jquery控件所在网页html(不知道为啥直接event点不出ownerDocument) letcurrHtml=$(event.target).pr......