selenium自动化测试入门实战


Posted in Python onDecember 21, 2020

一、Selenium介绍

Selenium 是什么?一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手)。也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。

中文文档:http://selenium-python-zh.readthedocs.io/en/latest/index.html

英文文档:http://selenium-python.readthedocs.io/index.html

二、python、pycharm安装

Python官网下载链接:
https://www.python.org/downloads/windows/
pycharm官网下载链接:https://www.jetbrains.com/pycharm/download/#section=windows

三、selenium安装

1)pip install selenium

安装Chrome driver

https://chromedriver.storage.googleapis.com/index.html?path=2.29/

Chrome浏览器和Chromedriver版本号:

chromedriver版本 支持的Chrome版本
v2.43 v69-71
v2.42 v68-70
v2.41 v67-69
v2.40 v66-68
v2.39 v66-68
v2.38 v65-67
v2.37 v64-66
v2.36 v63-65
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

2)把chromedriver.exe拷贝到到chrome的安装目录下…\Google\Chrome\Application\ ,同时把chrome的安装目录加入到path环境变量。

四、自动测试实战:12306订票

1.知识点

Selenium定位web元素的方法
浏览器调试工具使用

2.步骤
1) 人工走一遍流程,对自动化的流程心中有数
2) 按步骤拆分,然后对每一个小步骤编写自动化脚本
3) 将所有步骤合起来,多次运行,测试脚本

3.打开12306

#打开网址
driver.get('https://kyfw.12306.cn/otn')
#睡五秒自动选择验证码
time.sleep(5)

4.登录12306
1)在chrome界面,按F12快捷键,弹出chrome的调试工具
2)找出登录按钮的id和username、password的id
根据id定位元素

driver.find_element_by_id("username").click()
driver.find_element_by_id("username").send_keys("522268397@qq.com")
driver.find_element_by_id("password").send_keys("***")
print("continue")
time.sleep(15)

根据链接的文本来定位元素

driver.find_element_by_link_text("车票预订").click()
time.sleep(5)

selenium自动化测试入门实战

选择出发地

selenium自动化测试入门实战

利用js代码冻结浏览器界面。

setTimeout(function(){debugger;}, 5000)
#出发地选择
driver.find_element_by_id("fromStationText").click()
# setTimeout(function(){debugger;}, 5000)
driver.find_element_by_css_selector(u"[title=广州]").click()

time.sleep(5)

selenium自动化测试入门实战

右击代码位置,选择copy selector

selenium自动化测试入门实战

selenium自动化测试入门实战

selenium自动化测试入门实战

选择出发日

selenium自动化测试入门实战

selenium自动化测试入门实战

选择车次类型:

五、实验分析:

1、不会破解12306的变态验证码。没有自动破解验证码,所以留五秒钟自己手动选验证码。
2、因为是学生认证所以多一步需要确认(不是学生可去掉)
3、订票成功

六、总结

自动化测试的优点是能够很快、很广泛地查找缺陷,同时可以做很多重复性的工作,在回归测试阶段,我们可以利用自动化功能测试工具进行,而无须大量的软件测试人员手动的再次执行测试用例,极大的提高了工作效率。

自动化测试的缺点也很明显,它们只能检查一些比较主要的问题,如崩溃、死机,但是却无法发现一些一般的日常错误,这些错误通过人眼很容易找到,但机器却往往找不到。另外,在自动测试中编写测试脚本工作量也很大,有时候该工作量甚至超过了手动测试的时间。

Selenium脚本的执行速度受多方面因素的影响,如网速,操作步骤的繁琐程度,页面加载的速度,以及我们在脚本中设置的等待时间,运行脚本的线程数等。所以不能单方面追求运行速度的,要确保稳定性,能稳定地实现回归测试才是关键。
Selenium保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的。但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的。需要开发人员规范开发习惯,如给页面元素加上唯一的name,id等,这样就能大大地提高元素定位的准确性。

附代码:

#-*-coding:utf8-*-
import time
from selenium import webdriver

#运行chrome,打开浏览器
driver =webdriver.Chrome()
#设置浏览器窗口
driver.set_window_size(1080,800)

#设置全局操作时间
driver.implicitly_wait(10)

#打开网址
driver.get('https://kyfw.12306.cn/otn')

time.sleep(5)

driver.find_element_by_link_text("账号登录").click()
driver.find_element_by_id("J-userName").click()
driver.find_element_by_id("J-userName").send_keys("522268397@qq.com")
driver.find_element_by_id("J-password").send_keys("***")
print("continue")
#睡十五秒自动选择验证码
time.sleep(15)

driver.find_element_by_link_text("车票预订").click()
time.sleep(5)
#出发地选择
driver.find_element_by_id("fromStationText").click()
# setTimeout(function(){debugger;}, 5000)
driver.find_element_by_css_selector(u"[title=广州]").click()

time.sleep(5)
#目的地选择
driver.find_element_by_id("toStationText").click()
driver.find_element_by_css_selector(u"[title=北京]").click()
time.sleep(5)

#出发日期选择
driver.find_element_by_id("train_date").click()
driver.find_element_by_css_selector("body > div.cal-wrap > div:nth-child(1) > div.cal-cm > div:nth-child(24) > div").click()
time.sleep(5)

#车型选择
driver.find_element_by_css_selector("#_ul_station_train_code > li:nth-child(1) > label").click()
time.sleep(5)

while True:
  try:
    driver.find_element_by_id("query_ticket").click()
    e=driver.find_element_by_id("SWZ_6i00000G720F")
    e.click()
    if e.text in [u'无','--']:
      print ("nono")
      time.sleep(1)
    else:
      print("yes")
      # 购票
      driver.find_element_by_link_text("预订").click()
      # 乘车人选择
      driver.find_element_by_css_selector("#normal_passenger_id > li:nth-child(1) > label").click()
      # 学生票确认(不是学生可去掉)
      driver.find_element_by_link_text("确认").click()
      # 提交订单
      driver.find_element_by_link_text("提交订单").click()
      driver.find_element_by_link_text("确认").click()
  except:
    pass

到此这篇关于selenium自动化测试入门实战的文章就介绍到这了,更多相关selenium自动化测试内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python  __getattr__与__setattr__使用方法
Sep 06 Python
Python内置函数bin() oct()等实现进制转换
Dec 30 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
python调用百度REST API实现语音识别
Aug 30 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
Django之模板层的实现代码
Sep 09 Python
浅析使用Python搭建http服务器
Oct 27 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 Python
django中ImageField的使用详解
Dec 21 #Python
python文件路径操作方法总结
Dec 21 #Python
Python爬虫新手入门之初学lxml库
Dec 20 #Python
Python修改DBF文件指定列
Dec 19 #Python
Python实现FTP文件定时自动下载的步骤
Dec 19 #Python
Python+Xlwings 删除Excel的行和列
Dec 19 #Python
python Zmail模块简介与使用示例
Dec 19 #Python
You might like
php 远程图片保存到本地的函数类
2008/12/08 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
对python3标准库httpclient的使用详解
2018/12/18 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
五种Python转义表示法
2020/11/27 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
护理自荐信范文
2013/10/05 职场文书
专科毕业生求职简历的自我评价
2013/10/12 职场文书
公司新员工的演讲稿注意事项
2014/01/01 职场文书
课改先进个人汇报材料
2014/01/26 职场文书
经济管理自荐书
2014/06/09 职场文书
力学专业求职信
2014/07/23 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
电子商务实训报告总结
2014/11/05 职场文书
计划生育目标责任书
2015/05/09 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
厉行节约工作总结
2015/08/12 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技