自动化测试文档整理

2023-11-05

自动化测试:广义上讲一切使用代码或程序来辅助或代替人工测试的行为都认为是自动化测试。
自动化测试作用:提高工作效率,释放人力,可以把人从一些重复性的工作中解放出来。
应用环节:主要应用在回归测试和兼容性测试
适合自动化测试产品特点:
1、需求比较稳定
2、项目周期较长
3、开发的脚本要能重复使用

自动化测试类型:
1、基于UI的自动化测试
2、基于接口的自动化测试
3、基于函数的自动化测试

selenium(硒):是基于web的自动化测试框架,提供了一整套的用于web自动化测试的函数。
该框架由thoughtworks公司于2004年开发,支持多种语言(python、java、ruby、js),支持多种平台
支持目前几乎所有的主流浏览器。

selenium组成:
1、webdriver:是基于web的自动化测试框架,提供了一整套的用于web自动化测试的函数。
2、selenium IDE(了解):基于firefox浏览器的一个插件,可以记录浏览器中的操作,自动化导出可以执行的脚本。
3、selenium grid(了解):用于管理和执行自动化测试脚本的一款工具。

selenium自动化测试环境搭建:
1、安装python及编译器(pycharm)
2、安装浏览器
3、导入selenium包
4、将浏览器驱动文件存放路径添加到系统path变量中
5、将浏览器安装路径添加到系统path变量中

selenium离线安装:
需要下载selenium和urllib3两个库,先导入urllib3再导入selenium
tar格式安装包解压后,使用以下命令导入。
python setup.py build  
python setup.py install

注意:浏览器驱动文件与浏览器的版本需要匹配

chrome浏览器驱动文件下载地址:http://chromedriver.storage.googleapis.com/index.html
https://npm.taobao.org/mirrors/chromedriver
火狐浏览器驱动文件对应地址:https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html
                   下载地址:  https://github.com/mozilla/geckodriver/releases

edge浏览器驱动文件下载地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/


上课用浏览器及驱动文件版本:
firefox:95  geckodriver:0.30
chrome:96   chromedriver:96


元素定位:
1、单元素定位
    find_element()
    8中元素定位方法:
    1、id定位:使用元素的id属性定位
    2、name定位:使用元素的name属性定位
    3、class定位: 使用元素的class属性定位
        class属性值中有空格时,使用全部class属性值定位时,空格必须使用点代替
        class属性值有空格时,可以以空格来分隔class属性值,可以使用分隔后的部分class属性值定位
    4、tag定位:使用元素标签定位
    5、link_text定位:使用超链接文本定位
    6、partial_link_text定位:使用超链接部分文本定位
    7、css定位:使用元素层叠样式定位
        在css定位中,可以使用元素的任意属性定位元素。
        在css定位中可以在值的前面加点,表示在使用class属性值定位
        在css定位中可以在值的前面加#,表示在使用id属性值定位
    8、xpath定位:使用元素相对路径定位
        在xpath中可以使用由元素标签组成的相对路径+元素属性定位
            在xpath中使用class属性定位时,class属性值中有空格时,空格不能使用点代替
        在xpath中可以使用元素上的文字定位
        在xpath中可以使用contains关键字定位元素
        在xpath中可以使用父子兄弟节点定位:
            parent:父节点  preceding:兄节点 descendant:子节点   following:弟节点
  注意:单元素定位返回值为定位到的元素对象。
  
2、多元素定位
    find_elements()
    8中元素定位方法:
    1、id定位:使用元素的id属性定位
    2、name定位:使用元素的name属性定位
    3、class定位: 使用元素的class属性定位
        class属性值中有空格时,使用全部class属性值定位时,空格必须使用点代替
        class属性值有空格时,可以以空格来分隔class属性值,可以使用分隔后的部分class属性值定位
    4、tag定位:使用元素标签定位
    5、link_text定位:使用超链接文本定位
    6、partial_link_text定位:使用超链接部分文本定位
    7、css定位:使用元素层叠样式定位
    8、xpath定位:使用元素相对路径定位
  注意:多元素定位返回值为定位到的元素对象所组成的列表。列表中的元素按照定位到的顺序索引从0开始一次递增
        如果定位不到元素,返回空列表。


    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"


frame框架(标签:iframe或frame)切换:
switch_to.frame()
切换方式:
id切换:switch_to.frame('id属性值')
name切换:switch_to.frame('name属性值')
frame框架对象切换:先定位frame框架,获取frame框架元素对象,switch_to.frame(frame框架元素对象)
索引切换:switch_to.frame(索引值)

当frame框架存在嵌套情况时,必须一层一层切入


切回上层框架:switch_to.parent_frame()
切出框架:switch_to.default_content()

当两个平级的frame框架需要切换时,必须从原框架切出再切入目标框架


网页切换:
1、获取打开网页的句柄:window_handles,得到由网页对象组成的列表。
   列表中网页索引按照打开的顺序从0开始依次递增
2、切换网页:switch_to.window(网页列表[索引])
3、关闭网页:close()

网页常用操作:
网页最大化:maximize_window()
    驱动浏览后马上浏览器最大化,可以避免网页没有最大化的情况下,页面元素堆叠导致元素无法定位。
网页最小化:minimize_windown()
设置网页大小:set_windown_size(),可以用来测试网页在不同分辨率下的兼容性
刷新网页:refresh()
前进:forword()
后退:back()
获取网页url:current_url,常用于断言
获取网页标题:title,常用于断言
网页截图:get_screenshot_as_file()
    当脚本执行失败时将网页截图,可以用于分析脚本失败的原因

元素常用操作:
clear():输入之前先清除一下,可以避免浏览器缓存造成重复输入。
text:获取元素上的文字,可以用来断言
get_attribute('属性名'):获取元素的属性值
判断元素是否被选中:is_selected()
判断元素是否可用:is_enable()
判断元素是否显示:is_display()


鼠标操作:
在ActionChains库下提供了鼠标双击、右击、悬停、拖拽等方法
右击:context_click()
双击:double_click()
悬停:move_to_element()
按住鼠标左键不松开:click_and_hold()
拖拽某个元素多某个元素上:drag_and_drop()
拖拽某个元素到某个坐标点:drag_and_drop_by_offset()
将鼠标从当前位置移动到某个坐标:move_by_offset()
移动到距离某个元素左上角一定像素点位置:move_to_element_with_offset()
发送某个键到当前焦点元素:send_keys()
发送某个键到指定元素上:send_keys_to_element()
松开鼠标:release()
执行以上方法:perform()

firefox测量移动像素点插件:measure-it

模拟键盘操作:
ActionChains库下有key_down()和key_up()
在sendkeys中接口Keys模块,模拟键盘操作


警告窗口处理:
1、获取警告窗口对象:
alert_window = switch_to.alert
确定:accpect()
取消:dismiss()
输入:send_keys()
获取提示信息:text

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动化测试文档整理 的相关文章

  • 树莓派Tools交叉编译OpenGL(mesa-12.0.5)

    以下shell命令都是在root权限下执行的 得按照顺序来 不然会报找不到包或者一些文件找不到这些话 交叉编译玩多了 自己翻来覆去 整多了后其实也就融会贯通了 有耐心就行 宗旨就是你得让它们找到的到对应文件 一般要么在环境变量里去pkg c

随机推荐

  • 【牛客SQL】SQL19 查找所有员工的last_name和first_name以及对应的dept_name

    题目描述 描述 有一个员工表employees简况如下 有一个部门表departments表简况如下 有一个 部门员工关系表dept emp简况如下 请你查找所有员工的last name和first name以及对应的dept name 也
  • Git如何删除本地仓库

    删除仓库 就是需要删除仓库文件夹下隐藏的 git 文件夹 进入项目所在目录 打开git bash 开始删除本地仓库 显示所有本地分支 初始化时只有一个master分支 git branch 初始化本地版本库 重新初始化一次 可以忽略 git
  • 数据结构——队列

    创建队列 塞值和拿值 当我们创建一个LinkedList的时候 就可以用来模拟队列 因为该集合里有大量操作首尾元素的方法 之后就可以在该队列里进行数据的添加和获取 但是当我们使用数组来实现时 如何创建一个队列呢 最大值怎么确定 首尾初始值怎
  • 新闻主题识别及其热点演化分析流程

    1 数据收集 收集与科技新闻相关的大量文本数据 包括新闻报道 评论 社交媒体等 2 数据预处理 对收集到的文本数据进行清洗 去重 分词 停用词过滤等处理 3 特征提取 采用TF IDF Word2Vec等技术进行文本特征提取 将文本转化为向
  • Android JNI打印logcat日志

    在 JNI 中打印日志可以使用 android log print 函数来实现 该函数是 Android NDK 提供的一个用于在本地代码中输出日志消息到 logcat 的方法 要在 JNI 中打印日志 请按照以下步骤进行操作 在你的 JN
  • verilog除法器设计

    除法器原理 和十进制除法类似 计算 27 除以 5 的过程如下所示 除法运算过程如下 1 取被除数的高几位数据 位宽和除数相同 实例中是 3bit 数据 2 将被除数高位数据与除数作比较 如果前者不小于后者 则可得到对应位的商为 1 两者做
  • 线程池的基本创建方式and执行流程!

    一 什么是线程池 1 线程池 线程池是一种线程管理的机制 它是一组线程的集合 可以用来执行多个任务 线程池维护了一个固定数量的线程集合 可以从线程池中取出一个线程来执行任务 当任务执行完毕后 线程又会返回到线程池中 等待下一个任务的到来 当
  • 大学生电赛学习之路

    可以看到全国大学生电子设计大赛的认可度是非常高的 属于A类学科竞赛 电子设计大赛的形式也是给出题目 参赛者有四天三夜的时间解决问题 题目大致可以分为 控制类 测量类 高频类以及电力电子类 该竞赛会在单数年的9月份举行 但是对于新生来说电赛确
  • apk部分手机安装失败_安装apk解析包时出现错误怎么办?小编快速帮你解决

    Android智能手机的用户都会或多或少的遇到到这样的问题 安装apk解析包时出现错误 那么遇到这样的问题该如何解决 其实导致apk程序安装失败的原因是多方面的 而这所有的错误都基本归结于一点 解析包时出现错误 因此 我们只有采取逐个排查的
  • B、M、MB、K、KB、G、GB的关系

    一 概念 1 比特Bit 位 b 表示信息的最小单位 即计算机最小的存储单位 是二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量 它代表从一个二进制数组中选出一元 0或1 所提供的信息量 若此二元出现的概率相等 2 字节Byte
  • Uncaught TypeError: Cannot read property ‘Component‘ of undefined

    Cannot read property Component of undefined 1 问题描述 2 解决方案 问题描述 上一篇文章中在本地搭建了第一个React项目后 跟着react中文文档学习 封装时钟的外观代码如下 class C
  • 23、账号与权限管理

    账号与权限管理 例如 生产当中 要自己创建账号 30天与 90天账号密码 本章内容 管理员用户账号和组账号 管理目录和文件的属性 文章目录 1 组的分类 2 用户的分类 3 passwd 文件账号记录详细说明 4 charge 命令 修改账
  • 关于FLAG_ACTIVITY_MULTIPLE_TASK

    FLAG ACTIVITY MULTIPLE TASK 总结 1 使用改标记 需要自行管理Activity 2 需要与FLAG ACTIVITY NEW DOCUMENT或者FLAG ACTIVITY NEW TASK共同使用 This f
  • Error in created hook: “TypeError: Object(...) is not a function“

    最近我在请求列表的时候发现请求列表报这个错 起初我是以为我的参数没有对 传给后台的是个对象 而不是json对象 但是我记得我转换了的 后来发现是我在引入封装请求的时候写错了 代码如下 import imgList from api base
  • 华为服务器手机日志文件损坏,服务器日志文件

    服务器日志文件 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 客户端IP指的是访问者 用户设备 的IP地址 在Web应用
  • 自动驾驶通信中间件ecal源码分析—1. 什么是ecal

    前面做了一套自动驾驶通信中间件 阅读了ROS 1 0 roscpp和ecal相关源码 接下来将逐步对ecal的核心源码进行简要分析 1 什么是ecal ecal是德国大陆开源的一套自动驾驶通信中间件 The enhanced Communi
  • 获取input上传文件文件名及扩展名

    1 使用input标签的type file 上传文件 获取上传文件的文件名和扩展名 代码如下
  • 安装httpd软件包

    安装httpd软件包 root www yum repos d mount dev sr0 media mount media WARNING device write protected mounted read only root ww
  • ESP32运行microPython报错:rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee

    使用Esp32调试microPython的时候 上传代码后一直报错 附 报错原因 以及解决方法 Arduino以及idf 均会出现 如下内容 无限循环打印 rst 0xc SW CPU RESET boot 0x13 SPI FAST FL
  • 自动化测试文档整理

    自动化测试 广义上讲一切使用代码或程序来辅助或代替人工测试的行为都认为是自动化测试 自动化测试作用 提高工作效率 释放人力 可以把人从一些重复性的工作中解放出来 应用环节 主要应用在回归测试和兼容性测试 适合自动化测试产品特点 1 需求比较