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 能够作的事情不少不少,既然能将浏览用程序来控制,那其实现的功能就会不少不少,好比刷票,好比自动发贴啥的,我就不一一介绍了。

相关文章
相关标签/搜索