由于疫情,这几天每天都要上报出行记录。用的平台是金数据。表单设计挺糟糕,日期不能自动生成,并且每天都要重新填写身份相关的大量信息。考虑到疫情可能会持续几个月,因此很有必要自动填写来减少麻烦。
想了几个办法。首先想到用python的requests库,但由于不熟悉http协议怎么post,于是作罢。然后想到用selenium的webdriver,使用浏览器模拟人工操作,这个库的函数和js挺像,于是想起可以直接上js,最终就用了网页直接相关的脚本语言js。以下为js代码分析。为了防止错误提交,在测试时可以先把网页下载到本地,或者断开网络。
首先是网页分析。要处理的控件类型有日期、空格、下拉选框、地图、多级下拉选框、是否选框、按钮这些。一个一个处理之后把代码合并就得到了最后的脚本。主流浏览器都有调试工具,本文使用的是PC端的Chrome。调试完后也可以把脚本复制到手机端使用(使用的是X浏览器)。
1. 日期
手动填写时是给个日历选择日期,其实内容还是文本框,所以可以直接填写。先用getElement系列函数找到控件,然后设置value属性即可。
document.getElementById("entry_field_13").value="2020-02-"+Date()[8]+Date()[9];