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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium自动化测试通过localstorage绕过登陆相关的知识,希望对你有一定的参考价值。

引言:

  做自动化测试,尤其是通过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绕过登陆的主要内容,如果未能解决你的问题,请参考以下文章

selenium 自动化测试登录,登录页面有一个随机图片,应该怎么处理?

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

selenium自动化测试框架都有哪些

selenium自动化测试之测试结果验证

如何利用selenium写自动化测试脚本

Selenium+java自动化测试常用知识点