python下的自动化测试--selenium 验证码输入问题
之前一直在研究scrapy下数据抓取,在研究ajax数据抓取时碰巧研究了一下selenium,确实很实用,不过只做scrapy下的数据抓取,不怎么合适,一是性能的损耗,一直需要开一个浏览器,二是对于爬虫来说,分析ajax的请求才是正事。好吧,说远了,今天来扯一下我对于自动化测试一些见解。
python下的自动化测试库实在之多,selenium是浏览器测试的大杀器,关于selenium:
refer:http://www.seleniumhq.org/
关于安装和python环境的一些其它指导我就不罗列了,网上一大片:)
在测试web网站的时候,经常会遇到一些需要验证码的输入,这个时候输入解析验证码,一般有以下的几种方式:
1.交给程序逻辑处理:
将图片download下来做验证码识别,然后填入到验证码框中,这样需要有专门的验证码识别块,代码量略大
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 可以做的事情很多很多,既然能将浏览用程序来控制,那其实现的功能就会很多很多,比如刷票,比如自动发贴啥的,我就不一一介绍了。
python下的自动化测试--selenium 验证码输入问题的更多相关文章
- python模拟艺龙网登录带验证码输入
1.使用urllib与urllib2包 2.使用cookielib自动管理cookie 3.360浏览器F12抓信息 登录请求地址和验证码地址都拿到了如图 # -*- coding: utf-8 -* ...
- Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...
- python下的selenium和chrome driver的安装
selenium是一款支持多种语言.多种浏览器.多个平台的开源web自动化测试软件,测试人员可用python.java等语言编写自动化脚本,使得浏览器可以完全按照你的指令运行,大大节省了测试人员用鼠标 ...
- selenium+python+unittest实现自动化测试(入门篇)
本文主要讲解关于selenium自动化测试框架的入门知识点,教大家如何搭建selenium自动化测试环境,如何用selenium+python+unittest实现web页面的自动化测试,先来看看se ...
- 5月25号开学! 第13期《python3自动化测试selenium+接口》课程,python零基础也能学
2019年 第13期<python3自动化测试selenium+接口>课程,5月25号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学 本期上课时间:5月25号-7月28号,每周 ...
- 验证码输入自动聚焦下一个input或者删除自动聚焦上一个input
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- python下selenium模拟浏览器基础操作
1.安装及下载 selenium安装: pip install selenium 即可自动安装selenium geckodriver下载:https://github.com/mozilla/ge ...
- 自动化测试selenium教程
什么是自动化测试: 自动帮我们测试一个系统里面的主要功能,一个app.电脑网站.网页,每个系里面许多的功能,好比一个淘宝页面,里面N多功能,登录.注册,推荐,商品详情.评论等等:软件生命周期:需求调研 ...
- Python+Selenium----处理登录图片验证码
1.说明 在做自动化测试的时候,经常会遇到登录,其中比较麻烦的就是验证码的处理,现在比较常用的图形验证码,每次刷新,得到的验证码不一致,所以,一般来说,获取验证码图片有两种方式: (1)拿到验证码的图 ...
随机推荐
- 【[HAOI2016]找相同字符】
其实这道题跟[AHOI2013]差异很像 其实这个问题的本质就是让你算所有后缀的\(lcp\)长度之和,但是得来自两个不同的字符串 先把两个字符串拼起来做一遍\(SA\),由于我们多算了来自于同一个串 ...
- pytorch 反向梯度计算问题
计算如下\begin{array}{l}{x_{1}=w_{1} * \text { input }} \\ {x_{2}=w_{2} * x_{1}} \\ {x_{3}=w_{3} * x_{2} ...
- linux jdk环境变量配置
export JAVA_HOME=/home/faunjoe/java/jdk1.8.0_45export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$J ...
- 【转】JS gzip加密字符串并base64输出
http://blog.csdn.net/zunwei/article/details/49886115 最近开发中遇到一些问题,关于js怎么给一个字符串进行字节流加密.下面就详细说下做法. 首先引入 ...
- java随机数Reandom(简单介绍)
简单介绍 Java中存在着两种Random函数 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0, ...
- Ajax去除缓存
1.在Ajax发送请求钱加上anyAjaxObj.setRequestHeader("If-Modeified-Since","0").2.在Ajax发送请求钱 ...
- C#中Math.Round()的中国式用法
C#中的Math.Round()并不是使用的"四舍五入"法.而是(银行家算法),即:四舍六入五取偶.事实上这也是IEEE的规范,因此所有符合IEEE标准的语言都应该采用这样的算法. ...
- CALayer创建图层(转)
一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控制器view的layer上) @int ...
- 监控tomcat工具使用
用LambdaProbe监控Tomcat 简介: Lambda Probe(以前称为Tomcat Probe)是一款实时监控和管理的Apache Tomcat实例的基本工具.Lambda Probe ...
- 【模板】全排列(运用STL的next_permutation)
(1) 先将要排列的数据存入数组中: (2) 再将数组元素从小到大排序: (3) 每次调用next_permutation函数,都只进行1次排列,若数组元素完全变为递减的排列,则该函数返回0: int ...