在我們做web自動化的時候,經常會遇到含有登錄的頁面,我們必須登錄之后才能夠對我們想要操作的頁面元素進行定位,也就是說所有的操作都在登錄前提下,其實沒必要每次請求都先登錄,當我們登錄成功了,會在cookie里留下標識符比如token之類的,那么我們直接帶着這些cookie去請求頁面,就可以在cookie有效期內隨時登錄這個系統了(將變量中的cookie裝載到selenium的頭部信息即可)
1.base_url發起請求
2.定位name,password進行send_keys()
3.對登錄按鈕進行click()
driver.find_element_by_xpath('//*[@id="login"]').click()
# time.sleep(3)
time.sleep(5)
#寫入cookie
cookie = driver.get_cookies()
print(cookie)
jsonCookies = json.dumps(cookie)
with open('mycookie.json', 'w') as f:
f.write(jsonCookies)
4.獲取到瀏覽器cookie,攜帶cookie進行免密登錄
import json
from selenium import webdriver
import time
str = ''
with open('mycookie.json', 'r', encoding='utf-8') as f:
listCookies = json.loads(f.read())
cookie = [item["name"] + "=" + item["value"] for item in listCookies]
cookiestr = '; '.join(item for item in cookie)
print(listCookies)
driver = webdriver.Chrome()
driver.get(url)
for cookie in listCookies:
if 'expiry' in cookie:
del cookie['expiry']
driver.add_cookie(cookie)
driver.get(url)
driver.close()
這里注意兩點,就是要先打開頁面,裝載cookie成功,再次刷新頁面,另外cookie里有一個key是不能被裝載的,就是expiry,所以先行刪除