1. 程式人生 > >使用chrome或firefox的已存在的cookie訪問網站

使用chrome或firefox的已存在的cookie訪問網站

我們在編寫自動化測試中,經常會遇到討厭的驗證碼。這些驗證碼倒也不是沒法識別,我們可以把網頁截圖,再精確定位到驗證碼的圖片位置,把之儲存,然後再運用一堆方法去達到識別的目的。但是,這真值得麼?對於簡單的驗證碼,用程式可以達到較大的成功率,但是對於那些噪點非常多、且上下參差不齊的驗證碼,就不太好識別了。

因此,我們可以換個角度來思考:如果我們在跑自動化程式之前,已經登入了某個網站,那麼,我們就可以跳過輸入使用者名稱、密碼以及驗證碼的環節,直接讀取瀏覽器中已經儲存的cookie來訪問網站,就可以順利進去了。由於selenium啟動某個瀏覽器時,它啟動的是一個全新的瀏覽器,沒有帶任何cookie,所以我們必須新增一些程式碼,來讓程式載入這些cookie。

好,那麼,我們分別用chrome和firefox來操作,看看對應的實際程式碼是什麼。

這裡使用python實現。

一、對應chrome的實現

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. from selenium import webdriver  
  4. import time  
  5. import os  
  6. profile_dir=r"C:\Users\yan\AppData\Local\Google\Chrome\User Data"# 對應你的chrome的使用者資料存放路徑
  7. chrome_options=webdriver.ChromeOptions()  
  8. chrome_options.add_argument("user-data-dir="
    +os.path.abspath(profile_dir))  
  9. browser=webdriver.Chrome(chrome_options=chrome_options)  
  10. browser.maximize_window()  
  11. browser.get("http://www.baidu.com")  

以上程式碼即可實現開啟chrome時載入cookie來執行後續操作。例如,你已經登入了百度,那麼這時開啟瀏覽器,就是已登入狀態。否則,你就慢慢識別百度的驗證碼吧^_^
  1. browser=webdriver.Chrome(chrome_options=chrome_options)  
這句的引數就是添加了使用者資料,如果沒有引數,則是啟動一個全新的不帶cookie的瀏覽器。

二、對應firefox的實現

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. from selenium import webdriver  
  4. import time  
  5. import os  
  6. fp=webdriver.FirefoxProfile(r'C:\Users\yan\AppData\Roaming\Mozilla\Firefox\Profiles\btnc8mzb.default')  
  7. browser=webdriver.Firefox(fp)  
  8. browser.maximize_window()  
  9. browser.get("http://www.baidu.com")  
與上面類似。