5、大型项目的接口自动化实践记录----登录

练完手,我们就开始对ERP实际业务做自动化,先来看一下登录

因为没有接口文档,所以我们要自己手工去抓下包,这里用fiddler

一、登录接口抓包

1、清除缓存

在抓包前,先清除浏览器缓存,以免后面抓到过多没用的数据(可以自行试下不清的情况下抓包)

清除方式如下图,F12->缓存->清除域的Cookie


 

抓包

fiddler的相关配置,网上很容易搜到,这里不做介绍

1)打开fiddler,打开浏览器,访问登录页面


 

从页面上,我们可以看到的入参包括:

    登录类型:域账户、ERP账户

    用户名

    密码

    登录日期

2)前端登录,查看抓到的包


 

抓到了5个请求,第一个为访问登录页面,第二个为登录,中间经过三次重定向,最后访问网站主页

2、登录请求

我们要登录,所以看一下第二个请求

    先看请求头:

        除了前面说到过的请求头信息Content-Type、User-Agent外,发现还有一个ssosessionid


 

    再看一下请求的data:

        同样发现除登录类型、用户名、密码、日期外,多了几个参数

        service:要登录的地址(因为有多个分支环境)

        _eventId、submit、languageid这三个参数比较好理解,也没什么用

        lt、execution前端也没有填,哪里来的呢?


 

综上,多了三个非预期的入参lt | execution | ssosessionid,去看一下访问登录页面的请求,是不是那时候给了这三个值

3、访问登录页面

1)ssosessionid获取

看了下第一个请求返回的cookies信息,果然是这个时候服务器给的

PS:这里是因为访问SSO(单点登录系统),对方会给一个sessionid


 

2)lt、execution获取

看完返回的cookies,里面没有lt、execution,我们再看一下返回的文本视图TextView,果然看到了lt、execution

PS:这里似乎是开发使用的框架自己带的效果


 

二、登录实现

1、登录接口信息

前面把登录所需要的信息都抓到了,先汇总一下

    URL:https:xxx.com:端口号

    URI:/sso/login

    cookies:ssosessionid(访问登录页时返回)

    headers:用默认请求头即可,x-requested-with=XMLHttpRequest Content-Type=application/x-www-form-urlencoded User-Agent=Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Win64; x64; Trident/6.0)

    入参:

        ①service、ldap_login、username、password、usertype(登录填写)

        ②lt、execution(访问登录页返回)

        ③_eventId、submit、languageid(无用信息)

    预期返回:JSESSIONID

2、登录实现

1)先访问登录页面,获取ssosessionid、lt、execution

如下图,先访问登录页,获取ssosessionid、lt、execution

其中get请求方法,封装了Create Session、Get Request等,见上一篇


 

ssosessionid:${resp.cookies['ssosessionid']}

lt、execution:

    ①先通过正则,re.findall('name="lt" value="[^/]*','''${resp.text}'''),获取从name开始,到第一个/前的文本

PS:前端返回的文本如下,即name="lt" value="LT-229-lNR4cCzNk5oBveR1bzNRObNKH2HpIb-cas01.example.org"


 

    ②然后根据符号"分割上面的文本,分割结果为list:string.Split    “

    ③从list里获取该值,${tmp2[-2]}

2)用获取到的信息,登录


 

 

 

①service、ldap_login、username、password、usertype以及登录的URL(作为参数传入)

②lt、execution、ssosessionid用1)中的方法获取

③使用以上的信息请求,并获取返回的jsessionid

3)多环境登录配置

前面实现了单个环境登录,而我们存在多个环境,各个环境有个默认测试用账号

如下图,构建配置信息

新增变量,变量名格式:端口号_变量名


 

如下图,URL、Service变量=${${端口号}_变量名},${端口号}作为参数传入,如xx56,则URL=${xx56_URL_登录},即可对上我们上面的配置的变量名,取到对应的值。

username、password设置默认值为None,如果不传,则用我们配置的默认账号,如果传则使用传入的


 

4)配置信息分离

以上实现了多环境的登录,但是可以看到,登录需要用到的data、cookies等都是揉在一起的,如果data一些字段默认值修改,或者地址变更,用户名密码变化,维护不方便,因此我们可以把配置信息分离

    ①地址、用户名密码等配置信息分离,3)中已经实现

    ②登录的data分离


 

    ③cookies分离


 

    ④使用分离后的方法登录


 

 

PS:以上分离可能看起来没什么必要,这是因为登录功能比较简单,养成习惯,因为后面功能会复杂很多。

 

上一篇  4、大型项目的接口自动化实践记录----数据分离
下一篇  6、大型项目的接口自动化实践记录----订单新增

posted on 2019-08-01 09:44  慢慢走的测试  阅读(744)  评论(0编辑  收藏  举报