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 可以做的事情很多很多,既然能将浏览用程序来控制,那其实现的功能就会很多很多,比如刷票,比如自动发贴啥的,我就不一一介绍了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?