selenium自動化測試之--驗證碼處理


由於登錄反爬措施的越來越麻煩,甚至出現了12306這種看圖識物的無敵驗證碼,我只能說,我選擇死亡。這就衍生出了使用selenium來獲取獲取cookies。

因為經常會出現驗證碼,導致我們ui自動化測試工作無法更好開展,那么如何處理這種驗證碼呢?

 

 

 

 

像這種滑塊和手機驗證碼的情況下,無法通過正常辦法是沒有辦法進行處理,那么 一般對這種處理有以下幾種思路:

1、 通過接口請求,拿到對應驗證碼信息

2、 讓開發配合把驗證碼搞成萬能驗證碼

3、 注入cookies

 

那么如何通過注入cookies的形式來實現呢?

首先我們先通過自動化形式打開我們登錄頁面,此時我們加一定的延時時間,手動登錄后,打印出來cookies信息,此時我們就知道所需要的cookies信息了。

driver = webdriver.Chrome()
driver.get("https://fly.layui.com/user/login/")
time.sleep(3)
cookies = driver.get_cookies()
print (cookies)

拿到cookies信息后,我們此時就可以去寫登錄的代碼去免登陸了:
driver = webdriver.Chrome()
driver.get("https://fly.layui.com/user/login/")
cookies_01 = {'domain': 'fly.layui.com', 'expiry': 15522.125036, 'httpOnly': True, 'name': 'fly-layui', 'path': '/', 'secure': False, 'value': 's%3AwqpG2eBNqbfd6lmmWLc-DTiNP_.EAy1gm0u%2BCI8SMAxkFkaRWxUoGByz0g4RDXySLsjOfo'}
cookies_02 = {'domain': '.layui.com', 'expiry': 1567495108, 'httpOnly': False, 'name': 'Hm_lvt_d214947968792b839fd669a4decaaffc', 'path': '/', 'secure': False, 'value': '1551959096'}
cookies_03 = {'domain': '.layui.com', 'httpOnly': False, 'name': 'Hm_lpvt_d214947968792b839fd669a4decaaffc', 'path': '/', 'secure': False, 'value': '1558659109'}

driver.add_cookie(cookies_01)
driver.add_cookie(cookies_02)
driver.add_cookie(cookies_03)
driver.refresh()
刷新后就可以自動登錄了。


但是這存在一個問題就是,如果cookies信息很多,一條條手動去添加過去麻煩,所以我們可以先把他存到一個文件中:
cookiesFile = json.dumps(cookies)
with open('cookiesFile.json', 'w') as filemy:
    filemy.write(cookiesFile)
這樣你之前的cookies信息就會存在cookies文件中,下次要去使用就直接讀文件就好了,具體實現如下:

with open('cookiesFile.json','r') as filemy:
    cookiesInfo=json.loads(filemy.read())

for cc in range(0,len(cookiesInfo)):

    driver.add_cookie(cookiesInfo[cc])
driver.refresh()
此時通過refresh后,我們就直接登入了系統,是不是很方便呢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM