本文介紹一下如何利用cookie進(jìn)行登陸系統(tǒng),這里使用到了request模塊,我們首先利用request模塊,請(qǐng)求登陸地址進(jìn)行登陸,登陸成功以后獲取cookie值,然后再通過(guò)add_cookie添加到瀏覽器,使系統(tǒng)處于登陸狀態(tài)。這里需要注意的是request請(qǐng)求返回的cookie的格式不能直接傳入add_cookie方法,所以這里需要進(jìn)行轉(zhuǎn)換。
#這里需要注意區(qū)別,按住格式進(jìn)行轉(zhuǎn)換。
#request 請(qǐng)求返回cookie的格式
{'PHPSESSID': 'alvrh1i2h7joj2il2jn3sh7up1', 'uid': '16'}
#selenium方法需要的cookie的格式
{'value': 'alvrh1i2h7joj2il2jn3sh7up1', 'httpOnly': False, 'domain': 'yingxiao.chewumi.com', 'name': 'PHPSESSID', 'secure': False, 'path': '/'}
下面看一下例子,來(lái)通過(guò)cookie登陸然后跳轉(zhuǎn)到圈子詳情頁(yè)面
#-*- coding:utf-8 -*-
import time
import requests
from selenium import webdriver
def get_system_cookies(url,account,password):
'''通過(guò)request 登陸系統(tǒng),獲取cookie'''
cookiesList = []
data = {"username":account,"passwd":password}
roomSession = requests.Session()
roomSession.post(url,data=data)
loadCookies = requests.utils.dict_from_cookiejar(roomSession.cookies)
for cookieName,cookieValue in loadCookies.items():
cookies = {}
cookies['name'] = cookieName
cookies['value'] = cookieValue
cookiesList.append(cookies)
return cookiesList
def is_login_status_succeed(driver):
'''判斷是否登陸狀態(tài),非登陸狀態(tài),通過(guò)cookie登陸'''
loginUrl = 'http://yingxiao.chewumi.com/login.php' #登陸地址
account = 'account' #賬號(hào)
password = 'password' #密碼
driver.get('http://yingxiao.chewumi.com/index.php') #測(cè)試是否為登陸狀態(tài)
if '請(qǐng)登錄' in driver.page_source: #判斷是否登陸為登陸頁(yè)面
for cookie in get_system_cookies(loginUrl,account,password): #如果登陸界面獲取cookie
driver.add_cookie(cookie) #添加cookie ,通過(guò)Cookie登陸
return driver
def request_circle_details(driver,requestUrl):
'''測(cè)試跳轉(zhuǎn)圈子詳情'''
is_login_status_succeed(driver)
driver.get(requestUrl)
verifyField = driver.find_element_by_xpath('/html/body/div/div/div[2]/h1').text #獲取頁(yè)面標(biāo)題
try:
assert verifyField == '圈子詳情'
return '測(cè)試通過(guò)'
except AssertionError as e:
return '測(cè)試未通過(guò)'
'''測(cè)試下效果'''
requestUrl = 'http://yingxiao.chewumi.com/list.php?page=1'
driver = webdriver.Chrome()
driver.maximize_window()
print (request_circle_details(driver,requestUrl))
driver.get(requestUrl)
time.sleep(2)
driver.quit()
通過(guò)結(jié)果顯示我們沒有操作操作登陸狀態(tài),直接進(jìn)入了圈子詳情到頁(yè)面。