您的位置:首页 > 编程语言 > Python开发

selenium2+python_用cookie实现自动登录(百度首页为例)

2018-02-01 16:51 1156 查看
最近在学selenium webdriver,看书的过程中发现用cookie处理自动登录,所以研究了一下如何登录百度首页。过程很简单,先手动登录获取了cookies,然后保存得到的cookies,再开始写自动登录的代码。(由于有验证码,必须的这么做啊,高级的验证码处理方式我还不会,高手请绕过)。

获取cookies

代码如下:

# coding:utf-8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

def login():
# 手动登录获取cookies
driver = webdriver.Chrome()
driver.get("https://pan.baidu.com/")
driver.implicitly_wait(10)  # 如果不等待,下面的语句会出现找不到元素的错误
login=driver.find_element_by_id("TANGRAM__PSP_4__footerULoginBtn")
print login.get_attribute("innerHTML")
login.click()
username = "********"
password = "********"
driver.find_element_by_css_selector("#TANGRAM__PSP_4__userName").clear()
driver.find_element_by_css_selector("#TANGRAM__PSP_4__userName").send_keys(username)
driver.find_element_by_css_selector("#TANGRAM__PSP_4__password").send_keys(password)
driver.find_element_by_css_selector("#TANGRAM__PSP_4__submit").click()
time.sleep(10)  # 留充足的时间手动输入验证码
try: # 查找登录按钮,如果找不到,抛出异常
driver.find_element_by_css_selector("#TANGRAM__PSP_4__submit").click()
except NoSuchElementException, msg:
print msg
time.sleep(5)
cookies = driver.get_cookies()
print cookies
print driver.title
title = driver.title  # 返回的title为unicode类型,下面比较时应该也应与unicode类型比较
user = driver.find_element_by_class_name("user-name")
username = user.get_attribute("innerHTML")
#下面的代码是自己测试是否登录成功的
try:
if title == u'百度网盘-全部文件' and username == u'*****':  # u定义了一个unicode类型
print "登录成功"
else:
raise AssertionError("登录失败")
except AssertionError, msg:
print msg

if __name__ == "__main__":
login()


得到的cookies是一个list,里面有几个字典元素,类似下图:



自动登录

from selenium import webdriver
import time
driver= webdriver.Chrome()
driver.get("https://pan.baidu.com/")
login=driver.find_element_by_css_selector("#u1 > a.lb")
print login.get_attribute("innerHTML")
login.click()
time.sleep(5)
userlogin=driver.find_element_by_css_selector("#TANGRAM__PSP_10__footerULoginBtn")
userlogin.click()
cookieslist=[] #把获取到的cookie复制过来就行了
for cookie in cookieslist:  #遍历添加cookie
driver.add_cookie(cookie)
time.sleep(5)
driver.get("https://www.baidu.com")
time.sleep(5)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  selenium python