UI自动化使用cookie保持登录状态

前言:

在做UI自动化测试时,避免不了的就是一切自动化的入口-登录。如果在开发阶段,那么重复的输入账号密码登录显然是不现实的(可能会导致账号被关小黑屋~~),所以就可以利用首次登录后产生的cookie,来保持浏览器登录状态。

注意:此处使用谷歌浏览器+极客工具(一款好玩的工具)作为例子,要是你使用其他网站学习的话,只需要变化url即可,原理都是大差不差的,这里介绍2种方式保持登录状态,接下来看如何操作吧~

方式一:手动截取cookie

步骤:

1、打开浏览器访问https://www.lmcjl.com,按下F12并点击Application,找到Cookies下该网站的cookie,点击clear清空原始cookie。

2、手动登录网站,如图中所示cookie就是我们想要的:

3、编写脚本-手动将cookie加入浏览器

from selenium import webdriver
from selenium.webdriver.chrome import service
from time import sleep


def goto_url(url):
    # 驱动所在本地路径
    s = service.Service(r'D:\driver2\chromedriver-win64-119\chromedriver.exe')
    # 实例化谷歌浏览器
    wb = webdriver.Chrome(service=s)
    wb.maximize_window()
    # 访问网址
    wb.get(url=url)
    sleep(0.5)
    # 清空原始cookie
    wb.delete_all_cookies()
    # 装配cookie
    wb.add_cookie({'name': 'PHPSESSID', 'value': 'aiedlb0uaaao6f7uhs6ldci3cm'})
    sleep(3)
    # 刷新页面并等待看登录效果
    wb.refresh()
    sleep(10)


if __name__ == '__main__':
    goto_url('https://www.lmcjl.com')

注意:下图为驱动所在路径

结语:此种方式只适合cookie较少的情况,当登录后生成的cookie比较多时且要准确找到某些能够保持登录状态的cookie是很困难的,所以有了第二种方法。

方式二:自动存储cookie并调用

步骤:

1、需要进行1次登录成功的操作,同时将保存有登录信息的cookie存入文件:

def save_cookie(url):
    # 驱动所在本地路径
    s = service.Service(r'D:\driver2\chromedriver-win64-119\chromedriver.exe')
    # 实例化谷歌浏览器
    wb = webdriver.Chrome(service=s)
    wb.maximize_window()
    # 访问网址
    wb.get(url=url)
    # 预留手动登录的时间
    sleep(30)
    # 存登录后的cookie
    with open('cookies.txt', 'w') as f:
        # 注意要转为json格式存储
        f.write(json.dumps(wb.get_cookies()))
    print('写入cookie成功')

2、第一步操作之后,在后面cookie有效期限内都可以通过读取cookie.txt文件来保持登录状态,当cookie过期后再执行第一步即可~

def goto_url(url):
    # 驱动所在本地路径
    s = service.Service(r'D:\driver2\chromedriver-win64-119\chromedriver.exe')
    # 实例化谷歌浏览器
    wb = webdriver.Chrome(service=s)
    wb.maximize_window()
    # 访问网址
    wb.get(url=url)
    # 读取cookie文件
    with open('cookies.txt', 'r') as f:
        # 注意读取的数据要转化为json格式,若是使用f.read()则读取出的数据类型为str
        cookie = json.load(f)[0]
    print('读取cookie成功')
    # 清空原始cookie
    sleep(2)
    wb.delete_all_cookies()
    # 为浏览器装载cookie
    wb.add_cookie({'name': cookie['name'], 'value': cookie['value']})
    sleep(2)
    # 刷新查看是否登录成功
    wb.refresh()
    sleep(10)

整个代码:

from selenium import webdriver
from selenium.webdriver.chrome import service
from time import sleep
import json


def save_cookie(url):
    # 驱动所在本地路径
    s = service.Service(r'D:\driver2\chromedriver-win64-119\chromedriver.exe')
    # 实例化谷歌浏览器
    wb = webdriver.Chrome(service=s)
    wb.maximize_window()
    # 访问网址
    wb.get(url=url)
    # 预留手动登录的时间
    sleep(30)
    # 存登录后的cookie
    with open('cookies.txt', 'w') as f:
        # 注意要转为json格式存储
        f.write(json.dumps(wb.get_cookies()))
    print('写入cookie成功')


def goto_url(url):
    # 驱动所在本地路径
    s = service.Service(r'D:\driver2\chromedriver-win64-119\chromedriver.exe')
    # 实例化谷歌浏览器
    wb = webdriver.Chrome(service=s)
    wb.maximize_window()
    # 访问网址
    wb.get(url=url)
    # 读取cookie文件
    with open('cookies.txt', 'r') as f:
        # 注意读取的数据要转化为json格式,若是使用f.read()则读取出的数据类型为str
        cookie = json.load(f)[0]
    print('读取cookie成功')
    # 清空原始cookie
    sleep(2)
    wb.delete_all_cookies()
    # 为浏览器装载cookie
    wb.add_cookie({'name': cookie['name'], 'value': cookie['value']})
    sleep(2)
    # 刷新查看是否登录成功
    wb.refresh()
    sleep(10)


if __name__ == '__main__':
    goto_url('https://www.lmcjl.com')

结语:简单记录学习过程,祝各位道友学习愉快~

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值