1 背景介绍
如何让程序自动化填写网页表单数据,特别是涉及到批量数据情况时,可以减少人力。下面是涉及到的一些场景,都可以通过相关自动化程序实现。
场景1
场景1,领导安排,通过相关省、市、县、乡镇数据,填写到某个办公网页系统,或者进行注册,或者统计。因为拿不到系统内部的上传接口,一些网页通过异步js规避了接口,通过查看网页代码很难找到入口,只能通过人力,一条一条数据的进行上传。
场景2
场景2,涉及到多人进行报名注册,你是比赛负责人,或者班主任,或者领导安排你负责全校人员报名,此时也是拿到批量的数据,需要一个一个录如姓名,身份证号,选择对应单位等等,此时如果涉及到200条以上数据时非常麻烦。需要耗时耗力,并且还有可能会出错,copy或者填写错误。
场景3
场景3,开发好一个网页后,需要多位用户进行常态化测试,查看用户登录,登出等相关操作,需要写对应测试用例,进行自动化输入,check, 以及定时跑,保证线上网站功能正常,不影响线上用户。
第3节列举了一个案例实现,并分析了相关思路,感兴趣读者可以仔细阅读第3节。
2 解决方案
方案一,可以使用python 相关代码 控制浏览器,如Selenium WebDriver,可以通过 Selenium 提供的 一些接口来进行模拟人员进行点击或者提交。
方案二,可以按键精灵写相关代码进行数据读取,模拟人点击浏览器,以及相关数据输入,提交等一条龙服务。
3 解决方案
以该报名比赛为例(https://www.pecmnr.cn/gjbt/que-register.html?t=1743319078296)需要提供大量的学生的学生信息进行注册。
可以看到需要输入7个信息后,第八步,点击提交:同时该表单入口请求地址,对于一般程序员也是找到的。
相关excel数据如下图:(相关测试用户,实际可以用很多列,原理基本相同)
相关步骤可以总结为:
1 程序开始,读取数据
2 相关变量初始化。如循环次数等等
3 模拟人相关点击浏览器或者输入操作
4 设置相关条件,可用于check,或者日志打印
5 程序结束, 关闭相关资源
下面为报名比赛的相关自动化代码。
4 相关代码
//打开Excel文档工作表
Call Plugin.Office.OpenXls("C:\Users\GYU\Desktop\stuInfo.xls")
row = 2
Rem 循环开始
// 初始状态情况判断
'==========以下是按键精灵录制的内容==========
MoveTo -3659, -556
Delay 1541
LeftClick 1
Delay 2
LeftUp 1
MoveTo -2698, 492
Delay 950
MouseWheel -1
Delay 1
MouseWheel -1
Delay 27
MouseWheel -1
Delay 5
MouseWheel -1
MoveTo -2698, 493
Delay 6
MouseWheel -1
Delay 2
MouseWheel -1
Delay 8
MouseWheel -1
Delay 1
MouseWheel -1
Delay 6
MouseWheel -1
Delay 1
MouseWheel -1
Delay 15
MouseWheel -1
Delay 8
MouseWheel -1
Delay 8
MouseWheel -1
Delay 1
MouseWheel -1
Delay 31
MouseWheel -1
Delay 8
MouseWheel -1
MoveTo -2683, 486
Delay 257
MouseWheel -1
Delay 2
MouseWheel -1
Delay 13
MouseWheel -1
Delay 9
MouseWheel -1
Delay 8
MouseWheel -1
Delay 2
MouseWheel -1
Delay 8
MouseWheel -2
Delay 4
MouseWheel -2
Delay 4
MouseWheel -1
Delay 4
MouseWheel -1
Delay 1
MouseWheel -1
Delay 16
MouseWheel -1
Delay 2
MouseWheel -1
MoveTo -1353, 1025
Delay 1308
LeftClick 1
Delay 2
LeftUp 1
'==========以上是按键精灵录制的内容==========
//向Excel文档工作表(1)单元格(1, 2)读出内容存入(Text)变量
name = Plugin.Office.ReadXls(1, row, 2)
//向Excel文档工作表(1)单元格(1, 2)读出内容存入(Text)变量
id = Plugin.Office.ReadXls(1, row, 3)
KeyPress "Tab", 3
SayString name
Delay 200
KeyPress "Tab", 2
SayString id
Delay 200
KeyPress "Tab", 1
SayString "xx中学"
Delay 200
KeyPress "Tab", 1
SayString "张三老师"
Delay 200
KeyPress "Tab", 1
SayString "12345678"
KeyPress "Tab", 1
SayString "123456"
KeyPress "Tab", 1
SayString "123456"
Delay 200
MoveTo -1853, 1225
Delay 200
LeftClick 1
//KeyPress "Tab", 1
row = row + 1
If row = 501 Then
Goto 结束
End If
Goto 循环开始
Rem 结束
MessageBox "程序结束! "&(row - 1)&" 条数据插入成功!"
Call Plugin.Office.CloseXls()