软件测试第七阶段UI自动化第一天的总结

文章目录

这篇文章总结了一下我之前学习UI自动化的第一天的内容。 文章包含UI自动化测试介绍和元素的定位。

1. UI自动化测试介绍

1、什么是自动化测试

概念:由程序代替人工进行系统校验的过程

1.1自动化测试能解决的问题?
  • 回归测试 (冒烟测试)
    • 针对之前老的功能进行测试 通过自动化的代码来实现。
    • 针对上一个版本的问题的回归
  • 兼容性测试 web实例化不同的浏览器驱动相当于对不同的浏览器进行操作,从而解决浏览器的兼容性测试问题
  • 性能测试 通过一些工具来模拟多个用户实现并发操作
  • 提高工作效率,保障产品质量
1.2自动化测试的优点
  • 自动化测试能在较少的时间内执行更多的测试用例
  • 自动化测试能够减少人为的错误
  • 自动化测试能够克服手工的局限性
  • 自动化测试可以重复执行( 注册用户 --已注册)
1.3自动化则试的误区
  • 自动化测试可以完全代替手工测试 针针某些功能(图片、页面架构)也是没有办法通过自动化来实现
  • 自动化测试一定比手工测试厉害 金融行业更看重业务的积累
  • 自动化测试可以发现更多的BUG 是因为自动化测试主要用来做回归测试
  • 自动化测试适用于所有的功能 页面的架构、图片、文字,用户体验
1.4自动化测试分类
  • web自动化测试(本阶段学习内容) web系统
  • 移动app自动化(本阶段学习内容) app应用
  • 接口自动化 接口:用来给web或者app前端传输数据用的
  • 单元测试-自动化测试 针对开发人员的代码进行测试。 是由开发自己来做的
  • 安全测试(渗透测试) 针对系统、数据、应用等安全方面进行测试
  • 桌面应用自动化测试 针对windows的桌面应用程序进行自动化测试
  • 嵌入式设备自动化测试 针对嵌入式设备的应用程序进行自动化测试

2、什么是UI自动化测试

概念:UI(user interface)通过对web应用以及app应用进行自动化测试的过程。

2.1 什么项目适合做ui自动化测试?
  • 需求变动不频繁 前端代码变更维护不方便
  • 项目周期长 项目短,上线之后不需要再去测试
  • 项目需要回归测试 不用回归测试的也不需要写自动化
2.2 UI自动化测试在什么阶段开始?
  • 手工测试完成之后才做自动化测试,相当于是编写自动化测试代码(通过手工测试能够清楚的知道自动化测试的步骤以及结果)
2.3 UI自动化测试所属分类
  • 黑盒测试(功能测试) UI自动化测试 模拟人工对web以及app页面进行操作的过程
  • 白盒测试(单元测试)
  • 灰盒测试(接口测试)

1、V1 通过手工测试完成之后,有十个功能。

2、 针对V1版本的十个功能,进行自动化的代码编写

3、V2 增加了十个功能(总共有20个功能), v2版本的测试过程当,新增的10个功能手工测试。针对老的10个功能就可以通过自动化来进行回归测试。

2. 元素定位

3.1 如何进行元素定位?

元素: 由标签头+标签尾+标签头和标签尾包括的文本内容

元素的信息就是指元素的标签名以及元素的属性

元素的层级结构就是指元素之间相互嵌套的层级结构

元素定位最终就是通过元素的信息或者元素的层级结构来进行元素定位。

3.2 浏览器开发者工具介绍

  • 浏览器开发者工作主要用来查看元素的信息, 同时也可以查看接口的相关信息。
  • 浏览器开发者工作不需要安装,浏览器自带.
  • 浏览器开发者工具的启动:
    • 直接按F12 不区分浏览器
    • 通过右键的方式来启动浏览器开发者工具 (谷歌浏览器右键选择“检查”, 火狐浏览器右键选择“检查元素”
  • 浏览器开发者工具使用
    • 点击 浏览器开发者工具左上角的 元素查看器按钮
    • 再点击想要查看的元素

3.3 元素定位

  • id定位
  • name定位
  • class_name定位
  • tag_name定位
  • link_text定位
  • partail_link_text定位
  • xpath定位
  • css定位
3.3.1 ID定位
  • 通过元素的ID属性值来进行元素定位 ,在html标准规范中 ID值是唯一的
    说明: 元素要有ID属性
  • 定位方法: find_element_by_id(id) # id参数表示的是id的属性值
# 导包selenium
import time

from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开测试网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 通过ID定位到用户名输入框并在用户名输入框中输入admin
driver.find_element_by_id("userA").send_keys("admin")
# 通过ID定位到密码输入框并在密码输入框中输入123456
driver.find_element_by_id("passwordA").send_keys("123456")
# 等待3s
time.sleep(3)
# 退出浏览器
driver.quit()
3.3.2 name定位
  • 通过元素的name属性值为进行元素定位 name属性值 在HTML页面中,是可以重复的。
    说明:元素要有name属性
  • 定位方法: find_element_by_name(name) # name 参数表示的是name的属性值
# 导入selenium
import time

from selenium import webdriver
# 实例化浏览器驱动对象(创建浏览器驱动对象)
driver = webdriver.Chrome()  # 创建的是谷歌浏览器驱动对象   chrome后面有括号,而且第一个字母要大写
# driver = webdriver.Firefox() # 创建火狐浏览器驱动对象
# 打开百度网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 通过name定位用户名,输入admin
driver.find_element_by_name("userA").send_keys("admin")
# 通过name定位密码, 输入123456
driver.find_element_by_name("passwordA").send_keys("123456")
# 等待3s(代表业务操作)
time.sleep(3)     # 通过快捷导包的方式导入time模块,  光标要在time后面再按alt+enter
# 退出浏览器驱动(释放系统资源)
driver.quit()
3.3.3 class_name定位
  • 通过元素的class属性值进行元素定位 class属性值是可重复的
    说明:元素必须要有class属性
  • 定位方法: find_element_by_class_name(class_name) # class_name参数表示的是class的其中一个属性值
# 导入selenium
import time

from selenium import webdriver
# 实例化浏览器驱动对象(创建浏览器驱动对象)
driver = webdriver.Chrome()  # 创建的是谷歌浏览器驱动对象   chrome后面有括号,而且第一个字母要大写
# driver = webdriver.Firefox() # 创建火狐浏览器驱动对象
# 打开百度网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 1).通过class_name定位电话号码A,并输入:18611111111
driver.find_element_by_class_name("telA").send_keys("18611111111")
# 2).通过class_name定位电子邮箱A,并输入:123@qq.com
driver.find_element_by_class_name("dzyxA").send_keys("123@qq.com")
# 等待3s(代表业务操作)
time.sleep(3)     # 通过快捷导包的方式导入time模块,  光标要在time后面再按alt+enter
# 退出浏览器驱动(释放系统资源)
driver.quit()

3.3.4 tag_name定位
  • 通过元素的标签名称进行定位, 在同一个html页面当中,相同标签元素会有很多。
    这种定位元素的方式不建议大家在工作当中使用。
  • 定位方法: find_element_by_tag_name(tag_name) # tag_name表示的是元素的标签名称。
    如果有重复的元素,定位到的元素默认都是第一个元素
# 导入selenium
import time

from selenium import webdriver
# 实例化浏览器驱动对象(创建浏览器驱动对象)
driver = webdriver.Chrome()  # 创建的是谷歌浏览器驱动对象   chrome后面有括号,而且第一个字母要大写
# driver = webdriver.Firefox() # 创建火狐浏览器驱动对象
# 打开百度网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 1).使用tag_name定位用户名输入框,并输入:admin
driver.find_element_by_tag_name("input").send_keys("admin")
# 等待3s(代表业务操作)
time.sleep(3)     # 通过快捷导包的方式导入time模块,  光标要在time后面再按alt+enter
# 退出浏览器驱动(释放系统资源)
driver.quit()

3.3.5 link_text定位
  • 通过超链接的全部文本信息进行元素定位 ,主要用来定位a标签
  • 定位方法: find_element_by_link_text(link_text) # link_text参数代表的是a标签的全部文本内容。
# 导入selenium
import time

from selenium import webdriver
# 实例化浏览器驱动对象(创建浏览器驱动对象)
driver = webdriver.Chrome()  # 创建的是谷歌浏览器驱动对象   chrome后面有括号,而且第一个字母要大写
# driver = webdriver.Firefox() # 创建火狐浏览器驱动对象
# 打开百度网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 通过linu_text定位到新浪网站并点击
# driver.find_element_by_link_text("新浪").click()
driver.find_element_by_link_text("访问 新浪 网站").click()
# 等待3s(代表业务操作)
time.sleep(3)     # 通过快捷导包的方式导入time模块,  光标要在time后面再按alt+enter
# 退出浏览器驱动(释放系统资源)
driver.quit()
3.3.6 partial_link_text定位
  • 通过超链接的局部文本信息进行元素定位,主要用来定位a标签
  • 定位方法:find_element_by_partial_link_text(partial_link_text) # partial_link_text表示的是a标签 的局部文本内容
# 导入selenium
import time

from selenium import webdriver
# 实例化浏览器驱动对象(创建浏览器驱动对象)
driver = webdriver.Chrome()  # 创建的是谷歌浏览器驱动对象   chrome后面有括号,而且第一个字母要大写
# driver = webdriver.Firefox() # 创建火狐浏览器驱动对象
# 打开百度网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 通过partial_link_text定位到新浪网站并点击
driver.find_element_by_partial_link_text("访问 新浪 网站").click()
# 等待3s(代表业务操作)
time.sleep(3)     # 通过快捷导包的方式导入time模块,  光标要在time后面再按alt+enter
# 退出浏览器驱动(释放系统资源)
driver.quit()

3.3.7 定位一组元素
  • 定位一组元素的方法:
    find_elements_by_id(id)
    find_elements_by_tag_name(tag_name)
  • 定位一组元素返回的值是一个列表
  • 可以通过下标来使用列表中的元素
  • 下标是从0开始。
# 导入selenium
import time

from selenium import webdriver
# 实例化浏览器驱动对象(创建浏览器驱动对象)
driver = webdriver.Chrome()  # 创建的是谷歌浏览器驱动对象   chrome后面有括号,而且第一个字母要大写
# driver = webdriver.Firefox() # 创建火狐浏览器驱动对象
# 打开百度网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 使用tag_name定位密码输入框(第二个input标签),并输入:123456
elements = driver.find_elements_by_tag_name("input")
elements[2].send_keys("123456")
# 等待3s(代表业务操作)
time.sleep(3)     # 通过快捷导包的方式导入time模块,  光标要在time后面再按alt+enter
# 退出浏览器驱动(释放系统资源)
driver.quit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值