51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师2022年软件评测师考前培训开始啦!项目为王,自动化测试提升加速器 !企业级云端项目实战云集,晋升测试开发复合型人才
【128期】:一个测试工程师如何考虑自己的未来?《51测试 天地》精选好文 测试人职业发展! 【活动】为视频UP主打CALL,互动领福利!
查看: 2365|回复: 1

[转贴] python下的自动化测试--selenium 验证码输入问题

[复制链接]
  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 573 天

    连续签到: 4 天

    [LV.9]测试副司令

    发表于 2016-8-9 11:39:56 | 显示全部楼层 |阅读模式
    转自:博客园
    之前一直在研究scrapy下数据抓取,在研究ajax数据抓取时碰巧研究了一下selenium,确实很实用,不过只做scrapy下的数据抓取,不怎么合适,一是性能的损耗,一直需要开一个浏览器,二是对于爬虫来说,分析ajax的请求才是正事。好吧,说远了,今天来扯一下我对于自动化测试一些见解。
        python下的自动化测试库实在之多,selenium是浏览器测试的大杀器,关于selenium:
        关于安装和python环境的一些其它指导我就不罗列了,网上一大片:)
        在测试web网站的时候,经常会遇到一些需要验证码的输入,这个时候输入解析验证码,一般有以下的几种方式:
        1.交给程序逻辑处理:
        将图片download下来做验证码识别,然后填入到验证码框中,这样需要有专门的验证码识别块,代码量略大
        2.将验证码的识别码功能暂时注释掉
        这样就省去了验证一步
        3.写死验证码功能
        这样验证码识别就可以随意测试了。

        其实以上的三种可能,无非看自己的和程序员们沟通的怎么样和自己的技术水平了,如果你想练练手,完全可以自己做一个验证码识别功能出来,如果和开发者沟通的比如顺利,可以请他们暂时注释一下或者写个临时验证码
        第四种,我们可以自己在python的打开selenium的浏览器的时候继续操作,下面就直接上代码了:

    1. #coding=utf-8

    2. from splinter import Browser
    3. import time
    4. import sys
    5. reload(sys)
    6. sys.setdefaultencoding('utf8')





    7. def log_in_doban(Name = '', PassWrod = ''):
    8.     if Name and PassWrod:
    9.         bs = Browser('chrome')
    10.         bs.visit(url='http://www.douban.com/accounts/login?source=main')
    11.         if bs.is_element_present_by_id(id='email'):
    12.             bs.find_by_id(id='email').fill(Name)
    13.             bs.find_by_id(id='password').fill(PassWrod)
    14.             if bs.is_element_present_by_id(id='captcha_field'):
    15.                 #bs.find_by_id('captcha_field').fill(code_img)
    16.                 while True:
    17.                     val = bs.find_by_id(id='captcha_field').first.value
    18.                     if val and len(val)>0:
    19.                         bs.find_by_id('captcha_field').fill(val)
    20.                         break
    21.                     pass
    22.                 pass
    23.             bs.find_by_name('login').click()
    24.             print 'log in'
    25.             #bs.quit()



    26. if __name__ == '__main__':
    27.     log_in_doban(Name='test_account',PassWrod='test_password')
    复制代码





    我感觉selenium 可以做的事情很多很多,既然能将浏览用程序来控制,那其实现的功能就会很多很多,比如刷票,比如自动发贴啥的,我就不一一介绍了。

    回复

    使用道具 举报

    该用户从未签到

    发表于 2016-8-17 17:45:44 | 显示全部楼层
    哈哈,支持楼主
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2022-8-18 15:41 , Processed in 0.059464 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2022 Comsenz Inc.

    快速回复 返回顶部 返回列表