python下的自動化測試--selenium 驗證碼輸入問題


之前一直在研究scrapy下數據抓取,在研究ajax數據抓取時碰巧研究了一下selenium,確實很實用,不過只做scrapy下的數據抓取,不怎么合適,一是性能的損耗,一直需要開一個瀏覽器,二是對於爬蟲來說,分析ajax的請求才是正事。好吧,說遠了,今天來扯一下我對於自動化測試一些見解。

    python下的自動化測試庫實在之多,selenium是瀏覽器測試的大殺器,關於selenium:

    refer:http://www.seleniumhq.org/

    關於安裝和python環境的一些其它指導我就不羅列了,網上一大片:)

    在測試web網站的時候,經常會遇到一些需要驗證碼的輸入,這個時候輸入解析驗證碼,一般有以下的幾種方式:

    1.交給程序邏輯處理:

    將圖片download下來做驗證碼識別,然后填入到驗證碼框中,這樣需要有專門的驗證碼識別塊,代碼量略大

    2.將驗證碼的識別碼功能暫時注釋掉

    這樣就省去了驗證一步

    3.寫死驗證碼功能

    這樣驗證碼識別就可以隨意測試了。

    

    其實以上的三種可能,無非看自己的和程序員們溝通的怎么樣和自己的技術水平了,如果你想練練手,完全可以自己做一個驗證碼識別功能出來,如果和開發者溝通的比如順利,可以請他們暫時注釋一下或者寫個臨時驗證碼

    第四種,我們可以自己在python的打開selenium的瀏覽器的時候繼續操作,下面就直接上代碼了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#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 可以做的事情很多很多,既然能將瀏覽用程序來控制,那其實現的功能就會很多很多,比如刷票,比如自動發貼啥的,我就不一一介紹了。

 


免責聲明!

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



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