金数据统计表自动填写

由于疫情,这几天每天都要上报出行记录。用的平台是金数据。表单设计挺糟糕,日期不能自动生成,并且每天都要重新填写身份相关的大量信息。考虑到疫情可能会持续几个月,因此很有必要自动填写来减少麻烦。

想了几个办法。首先想到用python的requests库,但由于不熟悉http协议怎么post,于是作罢。然后想到用selenium的webdriver,使用浏览器模拟人工操作,这个库的函数和js挺像,于是想起可以直接上js,最终就用了网页直接相关的脚本语言js。以下为js代码分析。为了防止错误提交,在测试时可以先把网页下载到本地,或者断开网络。

首先是网页分析。要处理的控件类型有日期、空格、下拉选框、地图、多级下拉选框、是否选框、按钮这些。一个一个处理之后把代码合并就得到了最后的脚本。主流浏览器都有调试工具,本文使用的是PC端的Chrome。调试完后也可以把脚本复制到手机端使用(使用的是X浏览器)。

1. 日期

金数据统计表自动填写_第1张图片

手动填写时是给个日历选择日期,其实内容还是文本框,所以可以直接填写。先用getElement系列函数找到控件,然后设置value属性即可。

document.getElementById("entry_field_13").value="2020-02-"+Date()[8]+Date()[9];

代码中getElement函数的参数"entry_field_13"可以用浏览器工具得到,即在所在控件处右键->检查。填写的内容可以用Date()自动更新日期。Date()函数返回当前日期的字符串,可以打开浏览器的调试控制台输入Date()看一看。第8位加第9位就是年月日中的日所在的字符串。

2. 空格

统计表中有大量的空格要填,直接改value即可。

document.getElementById("entry_field_1").value="张三";

3. 下拉选框

同样右键检查找到控件。这个下拉选框是一个