selenium自动化测试

一.自动化选型

不同点selenium类(RF、Katalon、Macaca等)UFT(QTP)JS类库(Phantomjs、CasperJS、Puppeteer)
是否开源
支持平台Linux、Windows、MacWindowsLinux、Windows、Mac
支持语言Python、Perl、PHP、C#等VBJS
支持浏览器ie、chrome、firefox、opera、safarichrome、firefox、IEPhantomJS、casperjS不支持、puppeteer:chrome
支持录制支持支持不支持

二.selenium环境搭建(以python示例)

  1. python环境搭建

     

    下载python


    安装

     

    验证

 
  1. 安装selenium
 
  1. 验证是否安装成功:
 

能够看到selenium的详细信息则安装成功

 
  1. 安装浏览器。。。
  2. 下载浏览器驱动(以chrome为例)
    进入淘宝npm镜像网站,进入对应浏览器驱动页面
    http://npm.taobao.org/


    下载对应浏览器版本的驱动


    解压后放到环境变量位置即可

注意:
1.浏览器版本必须要和驱动版本对应,否则会出现调用不起来浏览器或者无法打开网页的问题
2.在firefox48版本以前firefox是不需要浏览器驱动的,但是在firefox48以后需要下载对应版本的geckodriver驱动

  1. 验证浏览器与驱动是否匹配
 

成功打开浏览器,并且打开指定网站,通常版本匹配就没问题了

 

三.录制回放--基于katalon recorder

优点:快速、简单
缺点:难维护
应用场景:适用于只需要完成当前任务,任务完成后不再需要使用了,使用次数较少的场景

目前selenium的录制工具有两种:
1.官方selenium ide
2.katalon recorder
推荐使用katalon recorder ,是katalon studio的子项目,具有比selenium ide更全面的功能

  1. 下载安装
    进入chrome应用商店,搜索katalon recorder,进行安装即可
    https://chrome.google.com/webstore/category/extensions?hl=zh-CN
    安装成功后,右上角会有对应图标

     

  2. 页面主要功能介绍:

     

  3. 录制实例:
    测试步骤:
    打开www.so.com
    输入框输入:肯德基
    点击搜索按钮
    录制过程:
    1>点击Record
    2>浏览器输入www.so.com
    3>点击输入框
    4>输入肯德基
    5>点击搜索
    6>点击stop

  4. 添加断言

     

  5. 查看失败截图

     

  6. 回放
    play:回放当前指定的case
    play suite:回放当前case所在测试套件
    play all:回放所有case

  7. 数据驱动

  8. 生成脚本

     

四.selenium基础api

  1. 浏览器操作
 
  1. 元素定位
 

以上定位方式都是通过元素的特定属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,这么办呢?或者说它的属性很多重复的。还有时候标签确实有id这个属性,但是id又是以一定规则自动生成的,这个时候就可以用xpath和css定位来解决。

  1. css定位

具有很强的灵活性,同时使用也是相对复杂
常见符号:
#表示 id选择器
.表示 class选择器
>表示子元素,层级
一个空格也表示子元素,但是是所有的后代子元素

 
  1. xpath定位与常用函数

XPath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言。通俗一点讲就是通过元素的路径来查找到这个元素

 

通常上面的方式基本上就可以定位到元素,但是对于一些动态生成的元素,路径重复性很高的元素,为了避免写太长的路径,有时候需要一些逻辑运算与xpath的函数来完成

 
  1. 元素操作
 
  1. js常用脚本
 
  1. 鼠标事件

click(on_element=None) ——单击鼠标左键
click_and_hold(on_element=None) ——点击鼠标左键,不松开
context_click(on_element=None) ——点击鼠标右键
double_click(on_element=None) ——双击鼠标左键
drag_and_drop(source, target) ——拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开
key_down(value, element=None) ——按下某个键盘上的键
key_up(value, element=None) ——松开某个键
move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标
move_to_element(to_element) ——鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置
perform() ——执行链中的所有动作
release(on_element=None) ——在某个元素位置松开鼠标左键
send_keys(*keys_to_send) ——发送某个键到当前焦点的元素
send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素

 
  1. 对话框处理(以alert为例,confirm,prompt方法一样)
 

五.测试用例设计

用例1:打开浏览器,打开指定页面,查找元素,元素操作,断言,关闭浏览器
用例2:打开浏览器,打开指定页面,查找元素,元素操作,断言,关闭浏览器
目的:
1.尽可能少的打开浏览器
2.每个case互不影响
3.减少重复性代码
4.捕获异常try...except...else....finaly
5.保留现场
6.用例需要有说明
分析:

  1. 使用unittest管理与运行测试用例
  2. 测试夹具的使用
  3. 统一管理开启和关闭浏览器
 

六.selenium grid

例1:测试需要运行ie8,9,10,11四个浏览器
例2:测试需要验证同一个功能在同一个浏览器,但是在不同硬件配置上的执行情况
问题:
1.一台计算机没办法同时安装4个ie,需要运行其他安装不同版本的机器
2.需要运行远程机器上的浏览器
3.不同机器上的运行情况需要上报给主机
selenium grid完美的解决了这些问题

  1. 什么是selenium grid:宿主机能够运行控制远程机器运行自动化,同时自动收集运行情况的一个服务
  2. selenium grid使用场景
  3. selenium grid实例(需要java环境)
    第一步:启动一个主节点(运行在宿主机)
 

日志信息也说明了,客户端需要能够连接的机器名,子节点需要注册到宿主节点

 

第二步:启动子节点并且注册到宿主节点

 

日志

 

第三步:代码改造

 

七.PageObject模式

  1. 在写自动化过程中遇到的问题

1.页面频繁变动,导致自动化运行失败,需要修改元素定位
2.一个元素在很多个case中使用,每次更改case需要把所有用到的地方都改一遍
3.case多了维护困难,根本不知道这个元素是哪个地方的

  1. 什么是PO模式

1.页面对象模型 (POM)是一种设计模式,用来管理维护一组元组集的对象库
2.在 PO模式下,应用程序的 每一个页面都有对page class
3.每一个 page class维护着该 web页的元素集和操作这些方法

  1. po模式的优点:

1.定位与测试用例分离,便于维护
2.用例更清晰,更易于阅读

  1. PO模式实例

1.封装driver
2.封装base driver
3.封装页面
4.封装页面元素定位信息
5.编写case

 

八.selenium使用中的坑

  1. handle与iframe切换
  2. 驱动360浏览器
  3. 驱动ie11浏览器
  4. jenkins调用远程windows的firefox、chrome
  5. phantomjs问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值