python下的自动化测试--selenium 验证码输入问题
【摘要】 背景
之前一直在研究scrapy下数据抓取,在研究ajax数据抓取时碰巧研究了一下selenium,确实很实用,不过只做scrapy下的数据抓取,不怎么合适
一是性能的损耗,一直需要开一个浏览器
二是对于爬虫来说,分析ajax的请求才是正事
好吧,说远了,今天来扯一下我对于自动化测试一些见解。
python下的自动化测试库实在之多,selenium是浏览器测试的大杀器,关...
背景
之前一直在研究scrapy下数据抓取,在研究ajax数据抓取时碰巧研究了一下selenium,确实很实用,不过只做scrapy下的数据抓取,不怎么合适
- 一是性能的损耗,一直需要开一个浏览器
- 二是对于爬虫来说,分析ajax的请求才是正事
好吧,说远了,今天来扯一下我对于自动化测试一些见解。
python下的自动化测试库实在之多,selenium是浏览器测试的大杀器,关于selenium:
refer:http://www.seleniumhq.org/
关于安装和python环境的一些其它指导我就不罗列了,网上一大片:)
在测试web网站的时候,经常会遇到一些需要验证码的输入,这个时候输入解析验证码,一般有以下的几种方式:
- 交给程序逻辑处理
- 将图片download下来做验证码识别,然后填入到验证码框中,这样需要有专门的验证码识别块,代码量略大
- 将验证码的识别码功能暂时注释掉
- 这样就省去了验证一步
- 写死验证码功能
- 这样验证码识别就可以随意测试了。
其实以上的三种可能,无非看自己的和程序员们沟通的怎么样和自己的技术水平了,如果你想练练手,完全可以自己做一个验证码识别功能出来,如果和开发者沟通的比如顺利,可以请他们暂时注释一下或者写个临时验证码
第四种,我们可以自己在python的打开selenium的浏览器的时候继续操作,下面就直接上代码了
- 这样验证码识别就可以随意测试了。
编码
# coding=utf-8 from splinter import Browser import time import sys 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 可以做的事情很多很多,既然能将浏览用程序来控制,那其实现的功能就会很多很多,比如刷票,比如自动发贴啥的,我就不一一介绍了。
文章来源: brucedone.com,作者:大鱼的鱼塘,版权归原作者所有,如需转载,请联系作者。
原文链接:brucedone.com/archives/126
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)