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

    以前一直在研究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 能夠作的事情不少不少,既然能將瀏覽用程序來控制,那其實現的功能就會不少不少,好比刷票,好比自動發貼啥的,我就不一一介紹了。

相關文章
相關標籤/搜索