snipe-it v5.1.2这个软件安装方法,看我之前的文章,今天来教大家用e4a中文编程软件编写安卓端的登录,后面再编写新建资产,编辑资产,扫描资产,查询资产,审计资产,借出资产,回收资产,打印资产标签,等功能。
用到的软件 snipe-it v5.1.2 + e4a6.7版 + 天天模拟器 + 谷歌浏览器
首先把上面的软件安装好,这里不提供安装包。
新建一个工程,命名为it资产管理
设置保存位置
在组件区把,标签,按钮,多线程(系统类组件),编辑框,密码编辑框控件 添加到界面上
把自带不需要用到的东西删除掉,然后再看图设置每个控件的参数
双击工程栏的属性,设置界面的一些参数
看图设置,然后点击保存修改
然后点击代码区,编写代码
把代码区,不要的代码删除掉,红框中全部删除
然后键入代码,顶格栏定义一个启动时间变量
变量 启动时间 为 长整数型 '创建一个启动时间为长整数型的变量
下面设置,如果点击返回键,在2秒内点击两次,就退出软件,否则提示再按一次退出程序
事件 主窗口.按下某键(键代码 为 整数型,传址 屏蔽 为 逻辑型) '主窗口有按任意实体按钮触发以下事件
如果 键代码 = 返回键 则 '如果键代码等于返回键则执行以下事件
如果 取启动时间() - 启动时间 >2000 则 '如果按放回键只按一次,就会弹出以下提示,如果按两次中间间却小于2秒则结束程序
弹出提示("再按一次退出程序")
启动时间 = 取启动时间()
否则
结束程序()
结束 如果
结束 如果
结束 事件
完整是下面这样的
打开谷歌浏览器,按f12,设置抓包,设置好后刷新登录界面,然后点击login这包查看数据
把红框数据记录下来,然后填写账号密码登录进去,看看用到哪些数据
点击登录后的login包,把红框内容记录下来,这里用到的登录方式是post请求,请注意,然后往下拉,看看需要用到哪些请求数据
点击view source,然后把原始数据记录下来,红框记录下来
分析记录下来的数据,可以看到_token=字段是服务器返回的数据,prevent_autofill=为空,password_fake=也为空不用管,剩下就是账号字段(username=)和密码字段(password=)
要取得_token=字段的数据先注销系统,然后右键登录界面,查看网页源代码
可以看到_token= 这个字段的数据是由get请求后,服务器返回的数据,我们只要把这段数据取出来使用就好了
代码这样写
变量 启动时间 为 长整数型 '创建一个启动时间为长整数型的变量
变量 返回请求 为 文本型 '创建一个返回请求为文本型的变量
变量 返回请求1 为 文本型 '创建一个返回请求1为文本型的变量
事件 主窗口.创建完毕()
多线程1.开始取网页源码("http://172.16.32.128/login","UTF-8") 'get方式取网站源码
结束 事件
事件 多线程1.取网页源码完毕(源码 为 文本型) '多线程取网页源码的结果放回在源码里面
返回请求 = 取指定文本2(源码,"<!-- Content -->","<!-- this is a hack to prevent Chrome from trying to autocomplete fields -->") '取it管理系统登录时需要用到的_token数据,然后赋给返回请求,后继会用到
返回请求1 = 取指定文本2(返回请求,"value=\"","\" />") '取it管理系统登录时需要用到的_token数据,然后赋给返回请求,后继会用到
结束 事件
事件 主窗口.按下某键(键代码 为 整数型,传址 屏蔽 为 逻辑型) '主窗口有按任意实体按钮触发以下事件
如果 键代码 = 返回键 则 '如果键代码等于返回键则执行以下事件
如果 取启动时间() - 启动时间 >2000 则 '如果按放回键只按一次,就会弹出以下提示,如果按两次中间间却小于2秒则结束程序
弹出提示("再按一次退出程序")
启动时间 = 取启动时间()
否则
结束程序()
结束 如果
结束 如果
结束 事件
取得_token= 这个字段的数据后,现在正式开始写登录代码,完成如下
变量 判断登录1 为 整数型 '创建一个判断登录为整数型的变量
变量 判断登录 为 整数型
变量 启动时间 为 长整数型 '创建一个启动时间为长整数型的变量
变量 返回请求 为 文本型 '创建一个返回请求为文本型的变量
变量 返回请求1 为 文本型 '创建一个返回请求1为文本型的变量
事件 主窗口.创建完毕() '主窗口创建完毕执行的事件
多线程1.开始取网页源码("http://172.16.32.128/login","UTF-8") '取网站源码
结束 事件
事件 多线程1.取网页源码完毕(源码 为 文本型) '多线程取网页源码的结果放回在源码里面
返回请求 = 取指定文本2(源码,"<!-- Content -->","<!-- this is a hack to prevent Chrome from trying to autocomplete fields -->") '取it管理系统登录时需要用到的_token数据,然后赋给返回请求,后继会用到
返回请求1 = 取指定文本2(返回请求,"value=\"","\" />") '取it管理系统登录时需要用到的_token数据,然后赋给返回请求,后继会用到
结束 事件
事件 按钮1.被单击() '按钮1点击触发的事件,就是登录按钮触发的事件
如果 编辑框1.内容="" 则 '如果编辑框1内容为空则执行以下事件
弹出提示("账号不能为空") '弹出提示不能用空账号登录系统
否则
如果 密码编辑框1.内容="" 则 '如果密码编辑框1内容为空则执行以下事件
弹出提示("密码不能为空") '弹出提示不能用空密码登录系统
否则 '账号密码都不为空则执行下面事件
显示进度对话框("正在登录…") '显示一个进度框提示正在登录
变量 提交地址 为 文本型 '设置一个文本型的变量
变量 提交数据 为 文本型 '设置一个文本型的变量
提交地址 = "http://172.16.32.128/login" '把一个网址赋给提交地址
提交数据 = "_token="&返回请求1&"&prevent_autofill=&password_fake=&username="&编辑框1.内容&"&password="&密码编辑框1.内容&"" 'it资产管理系统登录需要用到的数据赋给提交数据
多线程1.开始发送网络数据(提交地址,提交数据,"UTF-8") '用post方式 登录 it资产管理系统 数据和地址都包含在里面了
结束 如果
结束 如果
结束 事件
事件 多线程1.发送网络数据完毕(结果 为 文本型) '多线程登录的结果在结果里面放回
关闭进度对话框() '把进度条给关闭
如果 结果="" 则 '如果结果为空则执行以下结果
弹出提示("网络出错,请退出重新登录") '网络出错,退出系统再登录
否则 '如果结果不为空则执行以下结果
判断登录 = 寻找文本(结果,"hidden-xs",0) '查找文本,如果结果里面包含了hidden-xs,则返回0,找不到放回-1 注:如果结果里面包含hidden-xs代表登录成功
如果 判断登录 = -1 则 '如果判断登录等于 -1 则执行以下
弹出提示("网络错误或账号密码错误") '网络出错,或者账号密码错误
多线程1.开始取网页源码("http://172.16.32.128/logout","UTF-8") '刷新登录页面的数据,解决下次登录数据过期的问题
否则 '如果判断登录不为-1 则执行以下数据
判断登录1 = 寻找文本(结果,"表单会话已过期",0) '查找文本,如果结果里面包含了表单会话已过期,则返回0,找不到放回-1
如果 判断登录1 = -1 则 '如果判断登录为-1,代表找不到会话过期的提示,代表登录成功
'切换窗口(读取窗口("窗口1")) '切换到窗口1页面
编辑框2.内容=结果
否则 '如果判断登录不为-1,代表找到会话过期的提示,登录不成功
弹出提示("网络错误或账号密码错误") '网络出错,或者账号密码错误
多线程1.开始取网页源码("http://172.16.32.128/logout","UTF-8") '刷新登录页面的数据,解决下次登录数据过期的问题
结束 如果
结束 如果
结束 如果
结束 事件
事件 主窗口.按下某键(键代码 为 整数型,传址 屏蔽 为 逻辑型) '主窗口有按任意实体按钮触发以下事件
如果 键代码 = 返回键 则 '如果键代码等于返回键则执行以下事件
如果 取启动时间() - 启动时间 >2000 则 '如果按放回键只按一次,就会弹出以下提示,如果按两次中间间却小于2秒则结束程序
弹出提示("再按一次退出程序")
启动时间 = 取启动时间()
否则
结束程序()
结束 如果
结束 如果
结束 事件
编写完成后,编译成apk文件,测试一下
打开天天模拟器,然后把刚生成的apk文件安装在模拟器上面,测试一下
可以看到,返回的数据已经是控制面板里面的数据了,证明登录成功,后面再讲解怎么查询资产。修改资产之类的,界面是这样的