selenium自动化测试通过localstorage绕过登陆
引言:
做自动化测试,尤其是通过page object模式做UI自动化测试,登陆是个很麻烦的事情,比如你想对某个页面进行测试,一般直接链接到那个页面是不可能的,总是需要先登陆,然后刷新页面才能到想要的页面;而登录总不能每次都通过输入用户名、密码、验证码等登录,这就比较不智能,不自动化了;之前都是通过cookie来绕过登录,driver.add_cookie({'name': 'cookie_key', 'value': 'cookie_value'});但是HTML5发布后,慢慢不在通过cookie来记录用户的信息,而是使用localstorage,什么是localstorage??请自己百度一下;
正文:
先上代码,这是我们公司内网的系统,估计看这文章的朋友,直接用我的代码会执行不了,可以看下基本思想,然后融会贯通到自己的系统中;
#coding:utf-
from selenium import webdriver
import time
import requestsimport json
def get_token():
api_url = 'http://192.168.0.212:808/api/gwy/user/login.json'
request_data = 'data={"param":{"mobile":"18800080008","password":"96e79218965eb72c92a549dd5a330112"},"sign":"2b78538442997ea1b47eda413c91bf95"}'
HEADER = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
res = requests.post(api_url, data=request_data, headers=HEADER)
return json.dumps(res.json()['data']['token'])
driver = webdriver.Chrome()
driver.get('http://192.168.0.212:808/html/marketTypeManagement.html')
time.sleep()
# driver.add_cookie({'name': 'token', 'value': 'f53fe0f1-504b-4cac-adde-eb17e42fde72'})
driver.execute_script('localStorage.setItem("token", %s);'% get_token())
time.sleep()
driver.quit()
解读一下代码:
跟开发确认,是通过localstorage中的token字段来验证用户登录信息;所以首先一步是拿到登录的token,我这里是通过定义一个get_token()函数来调登录的接口,从接口返回值中拿到token值;

用的是requests模块模拟发起http请求,获取到返回值后,提取token值;
然后进行测试,主要是用执行一段js语法的脚本代码来向localStorage中注入获取到的token值,就能绕过登录,直接到你指定的页面了;
driver.execute_script('localStorage.setItem("token", arguments["token"]);', get_token()['data'])
selenium自动化测试通过localstorage绕过登陆的更多相关文章
- selenium自动化测试工具模拟登陆爬取当当网top500畅销书单
selenium自动化测试工具可谓是爬虫的利器,基本动态加载的网页都能抓取,当然随着大型网站的更新,也出现针对selenium的反爬,有些网站可以识别你是否用的是selenium访问,然后对你加以限制 ...
- Selenium自动化测试框架介绍
Selenium自动化测试框架介绍 1.测试架构作用 a.可维护性 b.提高编写脚本效率 c.提高脚本的可读性 2.框架的几大要素: Driver管理,脚本,数据,元素对象,LOG,报告,运行机制,失 ...
- Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通
Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通Selenium接口性能自动化测试基础部分:分层自动化思想Slenium介绍Selenium1.0/2.0/3.0Slenium R ...
- 添加cookie绕过登陆
添加cookie绕过登陆 #!/usr/bin/env python # -*- coding: utf-8 -*- from selenium import webdriver import tim ...
- 《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
1.简介 本文主要介绍两个在测试过程中可能会用到的功能:Actions类中的拖拽操作和Actions类中的划取字段操作.例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能. 2.拖拽操 ...
- 《手把手教你》系列技巧篇(六十四)-java+ selenium自动化测试 - cookie -中篇(详细教程)
1.简介 今天按照原计划宏哥要用实例来给小伙伴或童鞋们来演示一下,如何利用cookie实现跳过验证码进行登录.这个场景是自动登陆.有很多系统的登陆信息都是保存在cookie里的,因此只要往cookie ...
- JavaScript(Node.js)+ Selenium自动化测试
Selenium is a browser automation library. Most often used for testing web-applications, Selenium may ...
- Eclipse+Selenium自动化测试脚本设计V1.0
Eclipse+Selenium自动化测试脚本设计V1.0 http://www.docin.com/p-803032251.html
- Selenium自动化测试实践 公开班(广州)
Selenium自动化测试实践 公开班(广州) http://gdtesting.com/product.php?id=115
随机推荐
- @ModelAttribute的用法
- TP3.2整合kindeditor
HTML <!-- KE图片上传 --> <link rel="stylesheet" href="__PUBLIC__/kindeditor/th ...
- python type metaclass
在python中一切皆对象, 所有类的鼻祖都是type, 也就是所有类都是通过type来创建. 传统创建类 class Foo(object): def __init__(self,name): se ...
- AGC014E Blue and Red Tree
题意 There is a tree with \(N\) vertices numbered \(1\) through \(N\). The \(i\)-th of the \(N−1\) edg ...
- 使用EntityFramework6完成增删查改CRUD和事务
使用EntityFramework6完成增删查改和事务 上一节我们已经学习了如何使用EF连接MySQL数据库,并简单演示了一下如何使用EF6对数据库进行操作,这一节我来详细讲解一下. 使用EF对数据库 ...
- 使用EntityFramework6连接MySQL
使用EntityFramework6连接MySQL 不是微软的亲儿子这待遇就是不一样,其中的坑可真实不少,第一次连MySQL足足折腾了我大半天. 废话不多说直接开始. 安装MySQL 从官网上下载最新 ...
- centos6 ext4修复
输入root密码后: fsck -y /dev/mapper/vg_logserv-lv_root 修复完后重启 reboot 若忘记了root密码,可用系统ISO盘引导进入Rescue救援模式 在这 ...
- Vue基础汇总实践
1)双向绑定: <div id="app"> <p>{{message}}</p> <input v-model=" ...
- 访问php网站报500错误时显示错误显示
调试时可在访问的php文件开头输入 ini_set("display_errors", "On"); error_reporting(E_ALL | E_STR ...
- AIX6.1用g++安装Poco-1.6.1-all
项目终于到了把程序往小型机上部署的阶段了.不得不说AIX真是让人恶心,一个Poco编译弄了我1周时间.网上根本没有相关的资料. 1. AIX下安装gcc/g++:在ftp://ftp.software ...