以前一直在研究scrapy下數據抓取,在研究ajax數據抓取時碰巧研究了一下selenium,確實很實用,不過只作scrapy下的數據抓取,不怎麼合適,一是性能的損耗,一直須要開一個瀏覽器,二是對於爬蟲來講,分析ajax的請求才是正事。好吧,說遠了,今天來扯一下我對於自動化測試一些看法。python
python下的自動化測試庫實在之多,selenium是瀏覽器測試的大殺器,關於selenium:程序員
refer:http://www.seleniumhq.org/web
關於安裝和python環境的一些其它指導我就不羅列了,網上一大片:)ajax
在測試web網站的時候,常常會遇到一些須要驗證碼的輸入,這個時候輸入解析驗證碼,通常有如下的幾種方式:chrome
1.交給程序邏輯處理:瀏覽器
將圖片download下來作驗證碼識別,而後填入到驗證碼框中,這樣須要有專門的驗證碼識別塊,代碼量略大scrapy
2.將驗證碼的識別碼功能暫時註釋掉性能
這樣就省去了驗證一步測試
3.寫死驗證碼功能網站
這樣驗證碼識別就能夠隨意測試了。
其實以上的三種可能,無非看本身的和程序員們溝通的怎麼樣和本身的技術水平了,若是你想練練手,徹底能夠本身作一個驗證碼識別功能出來,若是和開發者溝通的好比順利,能夠請他們暫時註釋一下或者寫個臨時驗證碼
第四種,咱們能夠本身在python的打開selenium的瀏覽器的時候繼續操做,下面就直接上代碼了:
#coding=utf-8 from splinter import Browser import time import sys reload(sys) sys.setdefaultencoding('utf8') def log_in_doban(Name = '', PassWrod = ''): if Name and PassWrod: bs = Browser('chrome') bs.visit(url='http://www.douban.com/accounts/login?source=main') if bs.is_element_present_by_id(id='email'): bs.find_by_id(id='email').fill(Name) bs.find_by_id(id='password').fill(PassWrod) if bs.is_element_present_by_id(id='captcha_field'): #bs.find_by_id('captcha_field').fill(code_img) while True: val = bs.find_by_id(id='captcha_field').first.value if val and len(val)>0: bs.find_by_id('captcha_field').fill(val) break pass pass bs.find_by_name('login').click() print 'log in' #bs.quit() if __name__ == '__main__': log_in_doban(Name='test_account',PassWrod='test_password')
我感受selenium 能夠作的事情不少不少,既然能將瀏覽用程序來控制,那其實現的功能就會不少不少,好比刷票,好比自動發貼啥的,我就不一一介紹了。