Python+Selenium UI自动化 - cookie处理方法及适用场景

news/2024/5/18 14:29:33 标签: python, selenium, ui, 自动化, cookie

方法一:手动登录系统后,F12查看页面cookies的值,键值对的形式写入代码中

 add_cookie方法,实际编写时,遇到某些参数无效的报错 可以直接把对应的键值对删除,举例仅写了一行数据,实际运行需要写完整(有部分行是未发挥作用的,但需通过不断的排除才可知道哪些为必要参数)

python">import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.csdn.net/')

driver.add_cookie({'name':'log_Id_view','value':'2450','domian':'.csdn.net','path':'/','httpOnly':'FALSE','Secure':'FALSE'})#添加cookie

time.sleep(2)
driver.refresh()#刷新页面可看到已登录成功

方法二:打开验证码页等待一段时间,手工输入用户名密码验证码,点击提交或登录,print(driver.get_cookies()):打印输出cookies的值,直接从返回结果中复制

python">import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.csdn.net/')

time.sleep(30)
print(driver.get_cookies())#打印输出cookies的值,直接从返回结果中复制

方法三:将cookies写入Excel中,再读取Excel中的cookies

导入第三方模块,常用:xlwt xlrd openpy openpyxl

注意点:写入Excel中某些key的值数据类型为布尔类型,但读取时会读取为字符串类型,所以需要进行数据类型转换,转换语法可参考如下两种:

无需强制转换时报错的写法:cookie_dict['httpOnly'] = sheet.cell_value(row_num,4)

1、三元运算符转换

cookie_dict['httpOnly'] = True if sheet.cell_value(row_num,4) == 'True' else False

2、直接强制转换

cookie_dict['httpOnly'] = bool(sheet.cell_value(row_num,4))

python">import time
import xlrd
import xlwt
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.csdn.net/')
time.sleep(30)
cookies = driver.get_cookies()

#将cookies写入Excel文件
workbook = xlwt.Workbook(encoding='UTF-8')#创建workbook对象
worksheet = workbook.add_sheet('sheet1')#创建工作表sheet
worksheet.write(0,0,'name')#往表中写入内容,第一个参数为行 第二个参数为列  第三个参数为内容
worksheet.write(0,1,'value')
worksheet.write(0,2,'path')
worksheet.write(0,3,'domain')
worksheet.write(0,4,'httpOnly')
worksheet.write(0,5,'secure')
for i in range(1,len(cookies)+1): #len(cookies)取值为1,2,3,4
    worksheet.write(i, 0, cookies[i-1]['name'])  # 往表中写入内容,第一个参数为行 第二个参数为列  第三个参数为内容
    worksheet.write(i, 1, cookies[i-1]['value'])
    worksheet.write(i, 2, cookies[i-1]['path'])
    worksheet.write(i, 3, cookies[i-1]['domain'])
    worksheet.write(i, 4, cookies[i-1]['httpOnly'])
    worksheet.write(i, 5, cookies[i-1]['secure'])
workbook.save('csdn_cookies.xls')#csdn_cookies.xls

#读取Excel文件中的cookies值
Open_workbook = xlrd.open_Open_workbook('csdn_cookies.xls')#打开Excel文件
sheet = Open_workbook.sheet_by_name('sheet1')
cookie_list = []
for row_num in range(1,sheet.nrows):
    cookie_dict = {}
    cookie_dict['name'] = sheet.cell_value(row_num,0)
    cookie_dict['value'] = sheet.cell_value(row_num,1)
    cookie_dict['path'] = sheet.cell_value(row_num,2)
    cookie_dict['domain'] = sheet.cell_value(row_num,3)
    cookie_dict['httpOnly'] = True if sheet.cell_value(row_num,4) == 'True' else False#三元运算转换 True是字符串类型,需要转为布尔类型 否则会报错
    # cookie_dict['httpOnly'] = bool(sheet.cell_value(row_num,4))#直接强制转换   True是字符串类型,需要转为布尔类型 否则会报错
    cookie_dict['secure'] = True if sheet.cell_value(row_num,5) == 'True' else False
    cookie_list.append(cookie_dict)
for cookie in cookie_list:
    driver.add_cookie(cookie)
time.sleep(3)
driver.refresh()#刷新页面

注意:如果遇到cookie有Expirse字段,要去掉


http://www.niftyadmin.cn/n/1377536.html

相关文章

sqrt()的运用

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方&#xff…

CFA报名付款方式及支付失败解决方法

参加CFA考试的考生都知道CFA报名分为三个阶段,每一阶段的报名费用各不相同,CFA报名的付款方式有哪些? CFA协会接受以下付款方式 1.Visa,万事达卡,美国运通,大来卡,JCB和Discover 2.个人支票,公…

vnstat 查看服务器带宽统计命令

vnStat是一个Linux下的网络流量监控软件,它记录指定网卡每日的传输流量日志. 它并非基于网络包的过滤,而是分析文件系统- /proc, 所以vnStat无需root的权限就可使用. ,它还自带了 vnstati 命令,通过它可以直接可以输出流量统计图. #先安装epel源 [rootvpn ~]# yum install epel…

Python安装常见问题(1):zipimport.ZipImportError: can't decompress data

在CentOS以及其他的Linux系统中遇到安装包安装错误的原因,大多数都是因为缺少依赖包导致的,所以对于错误:zipimport.ZipImportError: can’t decompress data,是因为缺少zlib 的相关工具包导致的,知道了问题所在&#…

Python+Selenium UI自动化 - Unittest基本使用语法、断言、执行顺序

一、Unittest语法规则及示例 1、用import语句引入unittest模块 2、让所有执行测试的类都继承于TestCase类,可以将TestCase看成是对特定类进行测试的方法的集合 3、setUp()方法中进行测试前的初始化工作,teardown()方法中执行测试后的清除工作,它们都是…

python3+requests:使用类封装接口测试脚本

转载请注明出处:https://www.cnblogs.com/shapeL/p/9045439.html 前言:接口测试用例较多,我们不可能每个用例都写一次requests,get或者requests,post等,所以对共用方法要进行封装处理 第一次修改:将get请求和post请求单…

Golang捕获panic堆栈信息的优雅姿势

2019独角兽企业重金招聘Python工程师标准>>> // PanicTrace trace panic stack info. func PanicTrace(kb int) []byte {s : []byte("/src/runtime/panic.go")e : []byte("\ngoroutine ")line : []byte("\n")stack : make([]byte, kb…

Python+Selenium UI自动化 - Unittest构建测试套件

一、执行当前所有用例 1、直接unittest.main() import unittestclass Module_01(unittest.TestCase):def test_case01(self):print(执行模块1的Module_01.test_case01用例)def test_case02(self):print(执行模块1的Module_01.test_case02用例)class Module_02(unittest.TestC…