在使用Webdriver 自动化测试过程中,譬如,一个网页系统,如果我想测试登录成功后的一个具体页面,比如 学生可以参加的课程的页面,那么一般流程是:
- 用户登录(UI登录,可以新写脚本,也可以利用已存在的脚本)。
- 登录成功后跳转到目标页面,验证目标页面是否正确。
- 开始具体的测试执行。
这样就有一个问题,无论测试什么功能step 1 都会被重复执行,我的目标页面必须借助 Step 1才能达到。 假如目标页面UI没有改变,但是Login界面的UI改变了,那么我的脚本会执行失败, 有没有办法去掉无关页面的干扰直接测试目标页面呢?
当然有,我们可以利用cookie达到。原理很简单,就是利用服务器返回的登录成功的用户cookie,把它写入到当前的driver中,从而实现不依赖Login UI的目的。
具体做法如下:
- 利用Requests 直接发送请求给登录的API, 这里以*.englishtown.com/login/handler.ashx 为例,成功登录后拿到server 返回的cookie。
- 把cookie写入到webdriver的driver, 然后利用driver.get(url)跳转到目标页面。
关于Requests的用法,请查看官方文档。
核心代码如下(Python):