Selenium调试时免登陆的2种方法
Selenium编写用例的时候,需要不断的运行调试debug,但正常情况会每次重新打开一个Chrome运行,是全新的浏览器,没有任何历史记录和Cookie。如果你要完全运行所有测试用例,包括登陆,那这样很好,如果你不想运行所有用例或是在调试,就很麻烦,下面介绍2个免登陆的方法。
方法一:通过加cookies免登陆
首先你要了解你的系统登陆后都会有哪些Cookie或session,这个最好不要猜不要自己试,直接问开发最对最直接。以百度为例,首先手动登陆,然后刷新页面,看第一个请求的请求头的Cookie,感觉如图圈起来的比较像(这个也是我瞎猜的哈)。
输入以下代码运行:
from selenium import webdriver chrome_driver = r"D:\code\python\selenium_ui_auto\driver\chromedriver.exe" # 你driver的路径 driver = webdriver.Chrome(chrome_driver) driver.get('http://www.baidu.com/') # 添加Cookie driver.add_cookie({'name': 'BAIDUID', 'value': '67F332038A56CC0A9B109'}) driver.add_cookie({'name': 'BIDUPSID', 'value': '67F332038A56CC0A9B109'}) driver.add_cookie({'name': 'H_PS_PSSID', 'value': '1423_3199_31428_31341_31270_31163_31472'}) driver.add_cookie({'name': 'BDUSS', 'value': 'hpRAAAAAAAAAAAAAAAAAAAAAAAJt4s16beLNefm'}) #再次打开页面刷新Cookie driver.get('http://www.baidu.com/')
运行后,可以看到已经是登陆状态了。
方法二:设置用户数据目录免登陆
正常每次运行Selenium打开Chrome,数据目录都是临时,退出后就清了。那我们可以设置一个用户数据目录,这样以后selenium打开的Chrome,就跟我们正常使用打开的Chrome一样,是有历史数据的了。
from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument(r'--user-data-dir=D:\ChromeUserData') # 设置用户文件夹,可免登陆 chrome_driver = r"D:\code\python\selenium_ui_auto\driver\chromedriver.exe" # 你driver的路径 driver = webdriver.Chrome(chrome_driver, options=chrome_options)
通过以上代码打开浏览器,我们先手动登陆一下,如果有记住密码之类的就点选上。
关闭浏览器,再次运行以上代码,就是已登陆的状态了
注意,Cookie和Session都是有有效期的,所以一定时间后还是需要再次登陆的。
---------------------------------------------------------------------------------
关注微信公众号(测试工程师小站)即可在手机上查阅,并可接收更多测试分享,发送【测试资料】更可获取百G测试教程~
分类:
自动化测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)