selenium自动化原理

selenium自动化原理,第1张

使用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网页源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9657177.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存