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设计模式之单例模式实例
Apr 26 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
Python中整数的缓存机制讲解
Feb 16 Python
python实现简单图片物体标注工具
Mar 18 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
python中实现栈的三种方法
Dec 19 Python
python pillow库的基础使用教程
Jan 13 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正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
设定php简写功能的方法
2019/11/28 PHP
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
asm.js使用示例代码
2013/11/28 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
Python numpy 常用函数总结
2017/12/07 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
大家访活动实施方案
2014/03/10 职场文书
大学活动总结范文
2014/04/29 职场文书
妇联主席先进事迹
2014/05/18 职场文书
公开承诺书格式
2014/05/21 职场文书
优秀毕业生求职信
2014/06/05 职场文书
入党积极分子群众意见
2015/06/01 职场文书
入党培养人考察意见
2015/06/08 职场文书
开票证明
2015/06/23 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS