python-webdriver中添加cookie,解決添加了圖片驗證碼的問題

遇到問題:以前一直能用的腳本忽然跑不通了,仔細一看原來是研發新加了圖片驗證碼......web

解決問題: 手動抓取了cookie並塞進去,解決問題。固然若是你的cookie有效期過短或者是隨着會話關閉就失效的,此辦法並不合適。chrome

代碼初版:瀏覽器

def Login(driver):
cookies = { 'name': 'wx_sid', 'value': '43064da8ec6a117d16c34b59bdf6116abys4s99***'}
    driver.add_cookie(cookies)
  driver.get("http://admin.***.com/index/login")
    driver.quit()
if __name__=='__main__':
driver = webdriver.Chrome(executable_path="d:\\chromedriver")
Login(driver)

執行時發現啓動瀏覽器後沒有訪問指定的地址,在網上查資料緣由是 塞cookie時找不到塞到哪裏。 解決辦法是加入domain或者先訪問一下要塞入地址的連接。

代碼第二版:
def Login(driver):

driver.get("http://admin.***.com/index/login")
cookies = { 'name': 'wx_sid', 'value': '43064da8ec6a117d16c34b59bdf6116abys4s99***','path': '/','domain': '.admin.***.com'}
driver.add_cookie(cookies)
driver.get("http://admin.***.com/index")

if __name__=='__main__':
driver = webdriver.Chrome(executable_path="d:\\chromedriver")
Login(driver)
先訪問後發現仍是塞不進去,再查資料,解決辦法是須要刷新一下頁面。

代碼第三版:
def Login(driver):

driver.get("http://admin.***.com/index/login")
cookies = { 'name': 'wx_sid', 'value': '43064da8ec6a117d16c34b59bdf6116abys4s99***','path': '/','domain': '.admin.***.com'}
driver.add_cookie(cookies)
driver.refresh() # 刷新頁面
driver.get("http://admin.***.com/index")

if __name__=='__main__':
driver = webdriver.Chrome(executable_path="d:\\chromedriver")
Login(driver)

刷新後終於成功了,切換環境,從測試環境切到線上環境,再次執行又失敗了,反覆找緣由,終於.... 線上環境用的cookie name是wx這個,測試環境因爲跟其餘衝突研發本身改爲了wx_sid... 因此提醒小夥伴,這個cookie到底應該用哪一個最好仍是跟對應研發確認好。
最終版線上環境代碼:
def Login(driver):    driver.get("http://admin.***.com/index/login")    # 線上環境    cookies = { 'name': 'wx', 'value': '43064da8ec6a117d16c34b59bdf6116abys4s99***','path': '/','domain': '.admin.***.com'}    driver.add_cookie(cookies)    driver.refresh()    driver.get("http://admin.***.com/index")if __name__=='__main__':    driver = webdriver.Chrome(executable_path="d:\\chromedriver")    Login(driver)
相關文章
相關標籤/搜索