之前一直在研究scrapy下數據抓取,在研究Ajax數據抓取時碰巧研究了一下selenium,確實很實用,不過只做scrapy下的數據抓取,不怎么合適,一是性能的損耗,一直需要開一個瀏覽器,二是對于爬蟲來說,分析ajax的請求才是正事。好吧,說遠了,今天來扯一下我對于自動化測試一些見解。
python下的自動化測試庫實在之多,selenium是瀏覽器測試的大殺器,關于selenium:
refer:http://www.seleniumhq.org/
關于安裝和python環境的一些其它指導我就不羅列了,網上一大片:)
在測試web網站的時候,經常會遇到一些需要驗證碼的輸入,這個時候輸入解析驗證碼,一般有以下的幾種方式:
1.交給程序邏輯處理:
將圖片download下來做驗證碼識別,然后填入到驗證碼框中,這樣需要有專門的驗證碼識別塊,代碼量略大
2.將驗證碼的識別碼功能暫時注釋掉
這樣就省去了驗證一步
3.寫死驗證碼功能
這樣驗證碼識別就可以隨意測試了。
其實以上的三種可能,無非看自己的和程序員們溝通的怎么樣和自己的技術水平了,如果你想練練手,完全可以自己做一個驗證碼識別功能出來,如果和開發者溝通的比如順利,可以請他們暫時注釋一下或者寫個臨時驗證碼
第四種,我們可以自己在python的打開selenium的瀏覽器的時候繼續操作,下面就直接上代碼了:
#coding=utf-8from splinter import Browserimport timeimport sysreload(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_Word').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 可以做的事情很多很多,既然能將瀏覽用程序來控制,那其實現的功能就會很多很多,比如刷票,比如自動發貼啥的,我就不一一介紹了。
新聞熱點
疑難解答