码迷,mamicode.com
首页 > 其他好文 > 详细

selenium自动化测试通过localstorage绕过登陆

时间:2017-09-22 19:07:30      阅读:777      评论:0      收藏:0      [点我收藏+]

标签:mob   内网   script   通过   估计   code   语法   .post   span   

引言:

  做自动化测试,尤其是通过page object模式做UI自动化测试,登陆是个很麻烦的事情,比如你想对某个页面进行测试,一般直接链接到那个页面是不可能的,总是需要先登陆,然后刷新页面才能到想要的页面;而登录总不能每次都通过输入用户名、密码、验证码等登录,这就比较不智能,不自动化了;之前都是通过cookie来绕过登录,driver.add_cookie({‘name‘: ‘cookie_key‘, ‘value‘: ‘cookie_value‘});但是HTML5发布后,慢慢不在通过cookie来记录用户的信息,而是使用localstorage,什么是localstorage??请自己百度一下;

 

正文:

  先上代码,这是我们公司内网的系统,估计看这文章的朋友,直接用我的代码会执行不了,可以看下基本思想,然后融会贯通到自己的系统中;

#coding:utf-8

from selenium import webdriver
import time
import requests

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).json()
    return res

driver = webdriver.Chrome()
driver.get(http://192.168.0.212:808/html/marketTypeManagement.html)

time.sleep(3)
# driver.add_cookie({name: token, value: f53fe0f1-504b-4cac-adde-eb17e42fde72})
driver.execute_script(localStorage.setItem("token", arguments["token"]);, get_token()[data])

time.sleep(5)
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绕过登陆

标签:mob   内网   script   通过   估计   code   语法   .post   span   

原文地址:http://www.cnblogs.com/zanjiahaoge666/p/7576328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!