
使用selenium webdriver实现自动化:
1,首先要有自动化测试脚本(python实现)
2,安装浏览器
3,对需要控制的浏览器安装驱动
工作过程:
脚本(python文件-->客户端)----》驱动程序(发送json串)----》浏览器
浏览器:内部提供了 *** 作页面的接口,它收到了json串后,去触发相关的 *** 作
(点击、输入等)
第一步 自动化测试所要完成步骤
第二步 思维框架
设置 出发地 目的地 出发日期
1 先定位
2 获取站点的代号
3 通过excte_script() 去实现站点的设置
driverexecute_script('arguments[0]value="%s"'%from_station_code,from_station_input)
点击查询按钮 我希望看到车次列表
search_btn = driverfind_element_by_id('query_ticket')
按钮不能够被点击
driverexecute_script('arguments[0]click()', search_btn)
车次列表是通过ajax加载出来的
页面分析
显示等待 条件 这些tr标签加载出来
车次列表的分析 发现这些车次信息都是在tbody标签下面 有一些tr标签是需要个过滤的
train_trs = driverfind_elements_by_xpath('//tbody[@id="queryLeftTable"]/tr[not(@datatran)]')
我们把车次信息保存到列表里面
infos = train_trtextreplace('\n',' ')split(' ')
希望预定 用户想要乘坐的车次以及对应的席位
判断车次 判断席位
if number in selftrains:
seat_types = selftrains[number] # 根据字典的key来获取票
for seat_type in seat_types:
if seat_type == 'O':
count = infos[9] # 二等座
if count == '有' or countisdigit():
is_searched = True
break
elif seat_type == 'M':
count = infos[8] # 一等座
if count == '有' or countisdigit():
is_searched = True
break
1 确认乘客
显示等待 判断是否是乘客信息界面
显示等待 等待乘客的label标签是否加载出啦 (测试 如果点不住)
init方法当中 初始化了乘客的信息 [xxx, xxx]
2 确认席位
确认席位的时候 发现它是个select标签
我们就要获取 乘客的理想的席位
因为 我们发现那个车次number 拿不到 selfselected_number = None
通过给 selected_number = number
K - v 来找到 value值。 通过select标签的方法 seat_selectselect_by_value(seat_type) 还做了一个异常的处理
3 点击按钮
submit_btn = driverfind_element_by_id('submitOrder_id')
submit_btnclick()
一开始,基本上很多人都是用selenium IDE录制脚本开始的,我也是!有一本书写得很不错:selenium初学者指南!So,从录制回放开始我的selenium,而在这个过程中,不断地去补充我的html css知识,熟悉selenium的api!
慢慢地,发现录制的脚本在回放的时候经常报错,通过检查发现,是定位上的错误,导致这种定位的错误的最大原因是系统前端采用了某种框架,如tigerUI,exj所以HTML里面的标签很多都是动态的,比如id,class,name!这对selenium *** 作定位的元素而进行自动化来说是致命伤!
所以,开始自己写定位信息,这已经是必须的了!从而学习了xpth和css选择器,掌握了更加有效,快速和稳定地定位页面上的元素(定位的时候难免会碰到有iframe,这就得先切换到iframe中再进行定位了)!也就是,在selenium IDE上写脚本!
信心满满地在selenium IDE上写了长长地一段脚本,并且反复跑都能成功!总算尝到了一点点幸福的滋味!然后呢,问题来了,当我要修改和扩展这段的脚本的时候,才发现这效率是相当地低!一句句查!一句句改!多么痛的领悟!
另外,selenium IDE 默认启动的是火狐,在使用selenium RC 启动 IE 进行跑脚本时浏览器总是会报错!各种搞不定,各种不淡定!决定放弃使用IDE!
selenium有一个强大之处就是支持多种语方:java,C#,python等等,并且可以把录制的脚本转换成代码!我用的是java,果断走起!
不用说,当然是把脚本转为java代码了,在E >
1、可以通过浏览器的调试功能,例如Firefox按F12,点网络标签,然后就可以看到网页的所有数据信息,网页通过AJAX异步加载的数据也可以得到。
2、使用抓包类的工具,如SmartSniff,经过分析也可以得到数据也可以得到数据!
读取短信需要在相应的手机上读取呀
由于工作需要,登录网站需要用到验证码。最初是研究过验证码识别的,但是总是不能获取到我需要的那个验证码。直到这周五,才想起这事来,昨天顺利的解决了。
下面正题:
Python版本:343
所需要的代码库:PIL,selenium,tesseract
先上代码:
#coding:utf-8
import subprocess
from PIL import Image
from PIL import ImageOps
from selenium import webdriver
import time,os,sys
def cleanImage(imagePath):
image = Imageopen(imagePath) #打开
image = imagepoint(lambda x: 0 if x<143 else 255) #处理上的每个像素点,使上每个点“非黑即白”
borderImage = ImageOpsexpand(image,border=20,fill='white')
borderImagesave(imagePath)
def getAuthCode(driver, url=">
以上就是关于selenium自动化原理全部的内容,包括:selenium自动化原理、selenium综合案例、python selenium如何获取下一页的html网页源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)