Day01 - UI自动化测试介绍,安装selenium,八大元素定位

阶段目标

  • 能对web项目实施自动化测试

  • 能对app项目实施自动化测试

  • 项目中实施web和app自动化


今日目标

  • 自动化测试理论知识(前置)

  • web自动化环境的搭建(独立实现)

  • 使用代码实现web元素的定位(id\name\tag_name)


UI自动化测试

一、UI自动化测试介绍

学习目标

  1. 能判断软件项目是否适合实施UI自动化测试

  2. 理解UI自动化测试的作用

1. 认识UI自动化测试

为什么要进行UI自动化测试

  • 大量的版本回归

  • 手工回归效率低

  • 测试工程师价值得不到体现

体现价值:测试人员需要从重复的回归测试中抽离出来,投入更重要的功能模块测试中

工作效率: 提高测试效率

什么是UI自动化测试

  • UI:User Interface,简称UI,用户界面是系统和用户之间进行交互和信息交换的媒介

  • UI自动化测试:使用程序、脚本对系统界面体现的功能和数据信息展示等进行的测试技术

2. 实施UI自动化测试前置条件

不满足的条件:

  1. 自动化脚本需要进行重新编写

  2. 不能及时解决回归测试效率

  3. 自动化测试价值得不到体现

满足的前置条件:

  1. 项目需要回归测试:比如自营项目

  2. 项目需要实现自动化的功能模块需求变更不频繁

    1. 一般只实现核心功能模块

    2. 页面功能也展示信息变更

  3. 项目周期要长

    1. Time: 功能测试:UI自动化测试 = 1:3

3. UI自动化执行的时机

  • 一般情况下在手工测试完成之后

    • 版本或项目功能趋于稳定

  • 以下情况不满足执行的时机:

    • 项目UI界面还没有

    • 项目刚提测

    • 功能不稳定,问题多

    • 无法执行脚本调试

注意:

部分公司存在独立的自动化测试小组,可能在项目开始时就已经同步启动UI自动化测试工作,例如:环境部署,计划制定等……

4. UI自动化测试核心作用和劣势

互联网项目现状

  • 快速迭代

  • 文档缺失

UI自动化测试优势

  • 节省人力成本:回归测试工作由脚本代替人去执行

  • 提高回归测试效率:脚本执行测试速度更快

  • 提高测试质量:一旦自动化脚本库完善后测试执行过程更标准和准确

  • 将构建测试数据

  • 作为项目文档辅助

UI自动化测试劣势

  • 对测试人员要求提高

  • 前期投入成本大

  • 对项目要求高

思考

  • 下面几个常见的软件产品是否适合实施UI自动化测试

    A: 京东商城 ✅ B:淘宝网 ✅

    C: 滴滴打车web端 ✅ D: 推广广告宣传静态页面 ❌

  • UI自动化测试说法正确的是:

    A:完全可以代替手工回归测试 ❌

    B:一定可以册数所有的软件缺陷 ❌

    C:可以执行核心功能模块的回归测试,减少测试人员的重复回归测试工作 ✅

    D:提高项目质量的保障 ✅

  • 下面那些节点适合实施UI自动化测试代码编写:

    A:开发集成后端代码模块时 ❌

    B:项目开始执行冒烟测试 ❌

    C:项目提交产品验收阶段 ❌

    D:新版本上线后 ✅

二、Selenium-基础API之元素定位

1. 认识Web自动化测试工具-Selenium

  • 常见的自动化测试工具

    • QTP: 是一个商业化的功能测试工具,收费,支持web,桌面自动化测试。

    • Robot Framework: 是一个基于Python可扩展地关键字驱动的测试自动化框架

    • Selenium: 是一个开源的web自动化测试工具,免费,主要做功能测试。主流

  • Selenium特点

    • 开源软件

    • 跨平台

    • 支持多种浏览器

    • 支持多种语言

    • 功能强大,成熟稳定

  • Selenium核心组件

    • Selenium-IDE

      • Firefox 火狐插件,录制脚本工具。支持脚本回放和导出。可以导出Python和Java等类型的单元测试脚本

    • Selenium-Grid

      • 分布式执行自动化测试用例工具,用于大批量测试用例的

    • Selenium-WebDriver

      • 脚本编写核心工具,提供模拟手工操作的常用方法

三、Selenium-环境搭建

web自动化测试环境搭建步骤

  1. Python开发环境: Python解释器,pycharm编码工具

  2. 安装Selenium: Selenium提供自动化实现的常用方法

  3. 安装浏览器: 脚本结果直接体现,有Chrome,Firefox等

  4. 安装浏览器驱动:保证能够程序驱动浏览器,实现自动化测试

安装Selenium

  • 安装包

pip install selenium
  • 查看包

pip show selenium
  • 卸载包

pip uninstall selenium

安装浏览器驱动

  • Chrome:https://registry.npmmirror.com/binary.html?path=chromedriver/

    提示:浏览器驱动大版本必须和浏览器版本一致

  • 使用:

    windows:
     1、解压下载的驱动,获取到chromedriver.exe
     2、将chromedriver.exe复制到python.exe所在⽬录即可(避免再次将chromedrver.exe
    添加path变量)
    mac:
     1、解压下载的驱动,获取到chromedriver
     2、将chromedriver复制到/usr/local/bin⽬录即可。

四、Selenium-元素定位

学习目标:

  • 能够运用8中元素定位方法找到界面元素

1. 认识元素定位

  • 什么是元素定位?

    • 通过代码调用的方法查找元素

  • 元素定位方法

    • id

    • name

    • class

    • tag_name

    • link_text

    • partial_link_text

    • xpath

    • css

  • 步骤

    1. 打开谷歌浏览器
    2. 输入url
    3. 找元素及操作
    4. 关闭浏览器
    from time import sleep
    # 导包
    from selenium import webdriver
    # 打开浏览器(实例化浏览器对象)
    driver = webdriver.Chrome()
    # 输入url
    driver.get("<https://www.baidu.com>")
    # 找元素及操作
    sleep(3)
    # 关闭浏览器
    driver.quit()

2. Selenium 元素定位API

2.1 id定位

  • 方法: driver.find_element(By.ID, 'id值').send_keys('内容')

  • 前置:标签必须有id属性

  • 输入方法:元素.send_keys(’内容’)

  • 示例:

    from time import sleep
    # 导包定位元素方法
    from selenium.webdriver.common.by import By
    # 导包 webdriver
    from selenium import webdriver
    # 1.获取浏览器
    driver = webdriver.Chrome()
    # 2. 打开URL
    driver.get('file:///C:/Users/xiehaiyang/PycharmProjects/UIAutoTest/HTML/%E6%B3%A8%E5%86%8CA.html')
    # 3.查找操作元素
    driver.find_element(By.ID, 'userA').send_keys('admin')
    driver.find_element(By.ID, 'passwordA').send_keys('123456')
    # 4.暂停3秒
    sleep(3)
    # 5.关闭浏览器
    driver.quit()

2.2 name定位

  • 方法: driver.find_element(By.NAME, 'NAME值').send_keys('内容')

  • 前置:标签必须有NAME属性

  • 特点:当前页面可以重复

  • 提示:由于name属性可以重复,所以使用时需要查看是否唯一

  • 输入方法:元素.send_keys(’内容’)

  • 示例:

    # 需求:
    # 打开注册A.html页面,完成以下操作
    # 1).使用name定位,输入用户名:admin
    # 2).使用name定位,输入密码:123456
    # 3).3秒后关闭浏览器窗口
    from time import sleep
    ​
    from selenium.webdriver.common.by import By
    from selenium import webdriver
    ​
    driver = webdriver.Chrome()
    driver.get('file:///C:/Users/xiehaiyang/PycharmProjects/UIAutoTest/HTML/%E6%B3%A8%E5%86%8CA.html')
    driver.find_element(By.NAME, 'userA').send_keys('admin')
    driver.find_element(By.NAME, 'passwordA').send_keys('123456')
    sleep(3)
    driver.quit()

2.3 class定位

  • 方法: driver.find_element(By.CLASS, 'CLASS值').send_keys('内容')

  • 前置:标签必须有CLASS属性

  • 特点:class属性可以多个值

  • 输入方法:元素.send_keys(’内容’)

  • 示例:

        

# 需求:
# 打开注册A.html页面,完成以下操作
# 1).使用name定位,输入用户名:admin
# 2).使用name定位,输入密码:123456
# 3).通过class_name定位电话号码A,并输入:18611111111
# 4).通过class_name定位电子邮箱A,并输入:123@qq.com3).3秒后关闭浏览器窗口
# 5).3秒后关闭浏览器窗口
from time import sleep
​
from selenium import webdriver
from selenium.webdriver.common.by import By
​
drive = webdriver.Chrome()
drive.get('file:///C:/Users/xiehaiyang/PycharmProjects/UIAutoTest/HTML/%E6%B3%A8%E5%86%8CA.html')
drive.find_element(By.ID, 'userA').send_keys('admin')
drive.find_element(By.ID, 'passwordA').send_keys('123456')
drive.find_element(By.CLASS_NAME, 'telA').send_keys('18611111111')
drive.find_element(By.CLASS_NAME, 'c1').send_keys('123@qq.com')
​
sleep(3)
drive.quit()

 

说明:如果标签有多个class值,使用任何一个都可以。如:c1

2.4 tag_name定位

  • 方法: driver.find_element(By.TAG_NAME, 'TAG_NAME值').send_keys('内容')

  • 说明:根据标签名进行定位

  • 特点:相同的标签名有很多个

  • 提示:如果页面存在多个相同标签,默认返回第一个

  • 输入方法:元素.send_keys(’内容’)

  • 示例:

    # 需求:
    # 打开注册A.html页面,完成以下操作
    # 1).使用tag_name定位用户名输入框,并输入:admin
    # 2).3秒后关闭浏览器窗口
    from time import sleep
    ​
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    ​
    driver = webdriver.Chrome()
    driver.get('file:///C:/Users/xiehaiyang/PycharmProjects/UIAutoTest/HTML/%E6%B3%A8%E5%86%8CA.html')
    driver.find_element(By.TAG_NAME, 'input').send_keys('admin')
    ​
    sleep(3)
    driver.quit()

2.5 link_text定位

  • 方法: driver.find_element(By.LINK_TEXT, 'LINK_TEXT值').click()

  • 说明:根据链接文本(a标签)定位

  • 特点:传入的链接文本,必须全部匹配,不能模糊匹配

  • 输入方法:元素.click()

  • 示例:

    # 需求:
    # 打开注册A.html页面,完成以下操作
    # 1).使用link_text定位(访问 新浪 网站)超链接,并点击
    # 2).3秒后关闭浏览器窗口
    from time import sleep
    ​
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    ​
    driver = webdriver.Chrome()
    driver.get('file:///C:/Users/xiehaiyang/PycharmProjects/UIAutoTest/HTML/%E6%B3%A8%E5%86%8CA.html')
    driver.find_element(By.LINK_TEXT, '访问 新浪 网站').click()
    ​
    sleep(3)
    driver.quit()

2.6 partial_link_text定位

  • 方法: driver.find_element(By.PARTIAL_LINK_TEXT, 'LINK_TEXT值').click()

  • 说明:根据链接文本(a标签)定位

  • 特点:传入的文本,支持模糊匹配(传入局部文字)

  • 输入方法:元素.click()

  • 示例:

    # 需求:
    # 打开注册A.html页面,完成以下操作
    # 1).使用partial_link_text定位(访问 新浪 网站)超链接,并点击
    # 2).3秒后关闭浏览器窗口
    from time import sleep
    ​
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    ​
    driver = webdriver.Chrome()
    driver.get('file:///C:/Users/xiehaiyang/PycharmProjects/UIAutoTest/HTML/%E6%B3%A8%E5%86%8CA.html')
    driver.find_element(By.PARTIAL_LINK_TEXT, '新浪').click()
    ​
    sleep(3)
    driver.quit()

2.6 扩展:查找一组元素

  • 方法: driver.find_elements(By.XXXXX, 'XXXX值')

  • 说明:定位返回的是列表格式,可以进行遍历或添加下标的方式操作这个列表

  • 提示:八大元素定位方法,都可以使用查找一组元素,如果没有搜索到符合的标签,返回空列表;相反,查找一个元素的时候,没有搜索到,那么就会报错

  • 示例:

    # 需求:
    #打开注册A.html页面,完成以下操作
    # 1).使用定位一组元素(标签名)定位密码输入框,并输入:123456
    # 2).3秒后关闭浏览器窗口
    from time import sleep
    
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    driver.get('file:///C:/Users/xiehaiyang/PycharmProjects/UIAutoTest/HTML/%E6%B3%A8%E5%86%8CA.html')
    inputs = driver.find_elements(By.TAG_NAME, 'input')
    inputs[1].send_keys('123456')
    sleep(3)
    driver.quit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值