经过两个星期全部门的奋战,终于在工厂现场,按客户要求把500台终端机基本功能全部过一遍,顺利出货。
  在这个过程中,依然发现了几个偶发事件,后台对终端机的远程操作偶尔会出现失败,由于项目历史原因,当前的后台维护人员到现在也还没找到根本的原因。但是类似这种工作,对于我们测试团队来说,估计以后还会有很多,虽然不像这次一样要全批量测试,但是以后大批量出货,比如20000台,随机抽样检测1%那也得有两百台,所以对这个工作实现自动化非常有必要,工厂回来的这两天,赶紧跟开发人员沟通了这事,了解了前后端的通讯机制,终决定方案可行,也出了个demo,废话不说赶紧记录一下过程!
  因为是通过web端点击功能按钮控制终端机的重启,关机,锁屏,解锁,下发节目等操作的,一开始的构想是点击这些按钮应该是会发送一个http协议的post请求来实现控制,然后,再提交一个获取终端新信息的请求,分析返回结果,判断终端是否已经得到响应。赶紧抓包观察,可以实现,这个可以用urllib2实现。
  但是实现该步骤前,得先有登录操作,才有操作权限,故马上联系开发人员,申请一个验证码,解决了登录的验证问题。
  登录操作相当于给服务器提交一个全新的请求,服务器给你分配一个新的sessionID,然后我们客户端用cookie保存了sessionID,当我们后面再请求服务器的时候,会把这个sessionID一起发给服务器,服务器会到内存中搜索对应的sessionID,如果找到了,那说明我们处于登录的状态,具有相应的操作权限。
  所以,这由提出了另外一个问题,我们后面提交具体的功能请求,必须连同之前登录后的cookie一起提交服务器,这样才有可能真正提交成功,实现功能。这部分可以通过urllib2+cookielib实现。
  这样之后,应该可以没啥问题了,弄了一个demo,结果POST功能请求后返回的是一个说明操作没有权限的HTML代码。于是再找了一下原因,观察请求头发现还要提交token,于是抓包仔细观察一下登录后的一些动作,原来还有主机发送了token包的步骤

  头文件中的token需与提交请求url中的token一致,才可以返回正确的结果,这可以通过获取url中的值,传参到头文件中,但是问题是这个请求是提交login请求后自动提交的,如何才能获取到该请求中的url信息呢?我想到的是通过利用pcap模块,写一个抓包的方法,当提交了login请求后,调用抓包方法,抓取到该条请求的url信息。
  至此,已经初步实现了通过提交请求操作终端机与验证结果,后续继续完善,将机器ID参数化,多线程运行,实现一键批量测试终端机功能,期待下次出货的时候到现场利用上!