使用chrome或firefox的已存在的cookie訪問網站
阿新 • • 發佈:2019-02-02
我們在編寫自動化測試中,經常會遇到討厭的驗證碼。這些驗證碼倒也不是沒法識別,我們可以把網頁截圖,再精確定位到驗證碼的圖片位置,把之儲存,然後再運用一堆方法去達到識別的目的。但是,這真值得麼?對於簡單的驗證碼,用程式可以達到較大的成功率,但是對於那些噪點非常多、且上下參差不齊的驗證碼,就不太好識別了。
因此,我們可以換個角度來思考:如果我們在跑自動化程式之前,已經登入了某個網站,那麼,我們就可以跳過輸入使用者名稱、密碼以及驗證碼的環節,直接讀取瀏覽器中已經儲存的cookie來訪問網站,就可以順利進去了。由於selenium啟動某個瀏覽器時,它啟動的是一個全新的瀏覽器,沒有帶任何cookie,所以我們必須新增一些程式碼,來讓程式載入這些cookie。
好,那麼,我們分別用chrome和firefox來操作,看看對應的實際程式碼是什麼。
這裡使用python實現。
一、對應chrome的實現
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- from selenium import webdriver
- import time
- import os
- profile_dir=r"C:\Users\yan\AppData\Local\Google\Chrome\User Data"# 對應你的chrome的使用者資料存放路徑
- chrome_options=webdriver.ChromeOptions()
- chrome_options.add_argument("user-data-dir="
- browser=webdriver.Chrome(chrome_options=chrome_options)
- browser.maximize_window()
- browser.get("http://www.baidu.com")
以上程式碼即可實現開啟chrome時載入cookie來執行後續操作。例如,你已經登入了百度,那麼這時開啟瀏覽器,就是已登入狀態。否則,你就慢慢識別百度的驗證碼吧^_^
- browser=webdriver.Chrome(chrome_options=chrome_options)
二、對應firefox的實現
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- from selenium import webdriver
- import time
- import os
- fp=webdriver.FirefoxProfile(r'C:\Users\yan\AppData\Roaming\Mozilla\Firefox\Profiles\btnc8mzb.default')
- browser=webdriver.Firefox(fp)
- browser.maximize_window()
- browser.get("http://www.baidu.com")