python的selenium实现自动登陆
知道思想,参考其他文档,python的request模块和selenium模块都可以实现get_cookie()和 add_cookie()的功能。
由于现在在学习selenium自动化测试,我选用selenium的webdriver来实现。
- 获取登陆的cookie
from selenium import webdriver
import time,json
url = 'https://www.cnblogs.com/'
driver = webdriver.Chrome()
driver.get(url)
time.sleep(30) # 在此时输入用户名和密码,先登录进网站
cookies = driver.get_cookies()
print(cookies)
f1 = open('cookie.txt','w')
f1.write(json.dumps(cookies))
f1.close()
- 再从文件里读取cookie,加入到driver的请求中去
from selenium import webdriver
import time,json
driver = webdriver.Chrome()
driver.delete_all_cookies()
time.sleep(2)
with open('cookie.txt') as f:
cookie = json.loads(f.read())
print(cookie)
for c in cookie:
driver.add_cookie(c)
driver.get('https://www.cnblogs.com/')
居然报错了-_-||,console的内容,提示selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
查了资料,是由于在添加cookie之前没有访问网站,也就是说,需要先访问微博的某个网址,然后才能添加cookie,即添加cookie需要明确在哪个网站上添加cookie
把driver.get('https://www.cnblogs.com/')换下地方,简单调整如下。运行成功~~~
driver = webdriver.Chrome()
driver.delete_all_cookies()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
with open('cookie.txt') as f:
cookie = json.loads(f.read())
print(cookie)
for c in cookie:
driver.add_cookie(c)
driver.refresh()