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
    评论
目 录 自动化灌溉与信息化管理系统方案 1 1、现场智能感知平台: 4 1.1、井房首部设备智能监控系统 5 1.2、田间无线灌溉控制系统 7 1.3.无线土壤墒情监测系统 10 1.4.综合智能气象监测系统 11 2、无线网络传输平台 15 3、数据管理平台 16 4、应用平台(监控中心及移动管理控制端) 17 5、主要技术参数 20 自动化灌溉与信息化管理系统方案 自动化灌溉与信息化管理系统是针对农业大田种植分布广、监测点多、布线和供电 困难等特点,融合最新的物联网和云计算技术,采用高精度土壤温湿度传感器和智能气 象站,远程在线采集土壤墒情、气象信息,实现墒情自动预报、灌溉用水量智能决策、 远程/自动控制灌溉等功能。 该系统根据不同地域的土壤类型、灌溉水源、灌溉方式、种植作物等划分不同类型 区,在不同类型区内选择代表性的地块,建设具有土壤含水量,地下水位,降雨量等信 息自动采集、传输功能的监测点;通过灌溉预报软件结合信息实时监测系统,获得作物 最佳灌溉时间、灌溉水量及需采取的节水措施为主要内容的灌溉预报结果,定期向群众 发布,科学指导农民实时实量灌溉,达到节水目的。 系统组成: 大田灌溉自动化与信息化管理系统分为现场智能感知平台、无线网络传输平台、云 数据管理平台、应用平台(监控中心及移动管理控制端)四个层次,其中,田间脉冲电 磁阀、无线阀门控制器、远程水泵智能控制器、云服务器、主控制中心和村级(企业) 控制中心、移动控制终端等组成灌溉无线控制系统,能够实现现地无线遥控、远程随时 随地监控、轮灌组定时自动轮灌等控制方式,并且实时监测机井和阀门状态,灌溉流量 和管网压力,保障运行安全,及时提示报警信息。在此基础上,扩充田间土壤墒情监测 、农田气象监测、作物和泵房视频监测等内容,指导科学灌溉,提高灌溉的智能化程度 。 灌溉自动化系统总体层次分布图 系统特点: 全无线传输,自组网协议,电池供电、不需要任何布线,系统安装维护方便; 无线采用全球免费的公共频段(2.4GHz),省去传统无线的运营费用; 公网无线和现场无线融合,且具有冗余备份能力,提高了系统可靠性和安全性, 突破了系统现地访问限制; 无线阀控和采集节点超低能耗设计、内置电池保证使用3年;系统定时采集网络节 点电压、工作温度与通讯链路状态,实现网络自诊断功能; 所支持的电磁阀产品线广泛,不仅支持Netafim、Rain Bird和Hunter等灌 溉公司的电磁阀,同时也支持国外著名的阀制造企业Bermad、Dorot和TECHNIDR O的产品; 移动管理终端创新开发,突破了只能固定地点操作的限制,方便灌溉管理; 自动化功能多层次设计满足不同灌溉管理需要,提高了系统的适应性; 系统采用组件化和模块化设计,无线阀控节点、无线采集节点和机井控制站可以 按照项目需要自由扩展,方便项目设计,方便后续升级维护。 支持土壤墒情、作物长势信息和农田小气候信息的采集,强大的UniLog管理软件 能根据所采集的气象信息推算最适宜的农田灌溉时间和灌溉量,并做出智能的管 理决策; 管理软件集成GPRS/GSM技术,支持基于短信的智能报警,支持基于Internet的远 程管理。 依托云数据中心,灌溉自动化系统实现统一专家运维服务,现场维护人员只需要 根据系统和专业运维人员建议,安装拆卸设备和排除故障等。让高科技傻瓜化, 让自动化使用维护和基础滴灌工程一样简单。 1、现场智能感知平台: 平台包括有:井房首部设备智能监控系统、田间灌溉控制系统、田间土壤墒情信息 监测系统、近地小气候环境信息监测系统、智能气象站、作物长势远程监测系统。 1.1、井房首部设备智能监控系统 井房首部枢纽设备包括:变频器、一体式水泵智能控制器、压力传感器、流量传感 器、地下水位/温度传感器、过滤装置、安全防护装置,自动化施肥装置和测控装置等。 过滤装置作用是将水中的固体大颗粒、杂质等过滤,防止这些污物进入滴灌系统堵 塞滴头或在系统中形成沉淀。施肥装置的作用是使易溶于水并施于根系的肥料、农药、 化控药品等在施肥罐内充分溶解,然后再通过滴灌系统输送到作物根部,便于作物吸收 ,充分发挥肥效,同时减少肥料浪费,测控装置的作用是方便系统的操作、运行管理、 保证系统安全。本系统设有逆止阀、排气阀、压力表、水表、流量控制阀门。 井房首部设备智能监控系统实现机井水泵的启闭、电机保护、电量的计量、运行状 态监测,同时还对水源地地下水位、出水口压力和流量进行监测。 井房智能监控站示意图 井房智能监控站功能及原理如下: 远程的测控:智能井房控制终端通过GPRS无线,接收控制中心发送的命令,对水泵 变频器进行采集和控制,实现远程的水泵启停、电量采集的首部控制管理; 变频恒压管理:变频器根据灌溉所设定的压力,对灌溉主管道进行恒压调变频调

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值