复用浏览器仍然在每次用例开始都需要人为介入
若用例需要经常执行,复用浏览器则不是一个好的选择
大部分cookie的时效性都很长,扫一次可以使用多次
1.企业微信cookie有互踢机制。在获取cookie成功之后。不要再进行扫码操作!!!
2.获取cookie的时候,即执行代码get_cookies()时,一定要确保已经登录
3.植入cookie之后需要进入登录页面,刷新验证是否自动登录成功。
获取Cookie:driver.get_cookies()
添加Cookie:driver.add_cookie(cookie)
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.action_chains import ActionChains
import yaml
class TestCookieLogin:
def setup_class(self):
self.driver = webdriver.Chrome()
def test_get_cookies(self):
#todo 1、进入百度页面
self.driver.get('https://www.baidu.com/')
#todo 2、等待20秒,人工扫码操作
time.sleep(20)
#todo 3、成功登录之后,获取cookie信息
cookie = self.driver.get_cookies()
#todo 4、将cookie存入一个可持久存储的地方,文件
with open('cookie.yaml','w') as f:
#第一个参数是要写入的数据,第二个是文件流
#打开文件的时候,添加写入权限
yaml.safe_dump(cookie,f)
print(cookie)
def test_add_cookie(self):
#todo 1、访问百度主页面
self.driver.get('https://www.baidu.com/')
#todo 2、定义cookie,cookie从文件中获取
cookie = yaml.safe_load(open("cookie.yaml"))
#todo 3、植入cookie
for c in cookie:
self.driver.add_cookie(c)
time.sleep(3)
#todo 4、再次访问百度页面,发现无需扫码,自动登录,而且可以多次使用
self.driver.get('https://www.baidu.com/')