自动化测试-web

一、自动化测试理论:

  • UI: User Interface (用户接口-用户界面),主要包括:app 和web
  • UI自动化测试:使用工具或代码执行用例的过程
  • 什么样的项目适合做自动化:
  1. 需要回归测试项目(甲方自营项目、金融、电商)
  2. 需求变动不频繁:稳定的模块
  3. 项目周期长的项目:(甲方自营项目、6个月以上的外包)
  • 自动化测试的目的:提高测试效率

二、自动化测试工具及环境

1. 工具:

  • QTP:商业、收费、支持UI
  • robot framework: python扩展库,使用封装好的关键字驱动、半代码水平、支持UI
  • selenium: 开源/免费/主流支持UI

2. 环境搭建:

所需环境: python解释器+ pycharm+selenium+ 浏览器+ 浏览器驱动

selenium: pip install selenium

浏览器驱动: CNPM Binaries Mirroricon-default.png?t=N7T8https://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⽬录即可。

三、元素操作

1. 元素定位

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

元素定位方法:

id/ name/ class/ tag_name/ link_text/ partial_link_text/ xpath/ css

步骤:

from selenium import webdriver# 打开浏览器
driver = webdriver.Chrome("/usr/local/bin/chromedriver")
# 输入url
driver.get("https://www.baidu.com")
# 关闭浏览器
driver.quit()

1)id定位

方法: driver.find_element_by_id("id值")

前提:标签必须有id属性

输入方法: 元素.send_keys(“内容”)

driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("北京")
driver.find_element_by_id("su").click()

2)  name 定位

方法:driver.find_element_by_name("name属性值")

前提:标签有name属性

特点:由于name属性值可以重复,所以使用时需要查看是否为唯一

3)class 定位

方法:driver.find_element_by_class_name("class属性值")

前提:标签有class属性

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

4)  tag_name 定位

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

方法: driver.find_element_by_tag_name("标签名")

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

5)link_text 定位

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

方法: driver.find_element_by_link_text("链接文本")

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

6)partial_link_text 定位

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

方法: driver.find_element_by_partial_link_text("连接文本")

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

7)扩展-查找一组元素

说明:返回列表格式

方法:driver.find_elements_by_xxx()

提示:如果没有搜索到符合的标签,会返回空列表

2. 元素定位(xpath\css)

为什么要学习 xpath 和 css?

如果标签没有id/name/class 属性,也不是链接标签,只能用 tag_name定位,比较麻烦。

使用xpath 和 css 比较方便,支持任意属性和层级来查找元素

1)xpath

是 xml path 的简称,使用标签路径来定位

属性:

单属性://*[@属性名='属性值']

多属性://*[@属性名='属性值' and @属性名='属性值']

层级与属性:

说明:如果元素现有的属性不能唯一匹配,需要结合层级使用

语法:

//父标签/子标签 必须为直属子级

//父标签[@属性='值']//后代标签 父和后代之间可以跨越元素

扩展:

根据显示文本定位: //*[text()='文本值']

属性模糊匹配://*[contains(@属性名,'属性部分值')]

2)css选择器

css选择器是html查找元素的工具

id选择器/类选择器/标签选择器/属性选择器/层级选择器

id选择器:

语法:#id属性值

前提: 标签必须有id属性

类选择器:

语法:.class属性值

前提:标签必须有class属性

标签选择器:

语法:标签名

提示:注意标签是否在页面中唯一,否则返回单个或所有

属性选择器:

语法: [属性名='属性值']

层级选择器:

父子关系: 选择器>选择器 ,比如: #p1>input

后代关系:选择器 选择器 比如:#p1 input

元素定位总结:

3. 元素的常用操作方法:

点击 元素.click()

输入 元素.send_keys(内容)

清空 元素.clear()

获取元素信息

  • 获取大小: 元素.size
  • 获取文本: 元素.text
  • 获取属性:元素.get_attribute('属性名')
  • 元素是否可见: 元素.is_displayed()
  • 元素是否可用:元素.is_enabled()
  • 元素是否选中: 元素.is_selected()

4. 浏览器的操作

浏览器常用的api:

窗口最大化: driver.maximize_window()

设置窗口大小: driver.set_window_size(width,height)

设置窗口位置:driver.set_window_position(x,y)

页面后退操作:driver.back()

页面前置操作:driver.forward()

页面刷新:driver.refresh()

浏览器常用获取信息api:

关闭当前窗口: driver.close()

关闭浏览器:driver.quit()

获取标题:driver.title

获取网页地址: driver.current_url

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/307834.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CH254X 8051芯片手册介绍

1 8051CPU 8051是一种8位元的单芯片微控制器,属于MCS-51单芯片的一种,由英特尔(Intel)公司于1981年制造。Intel公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,如Atmel、飞利浦、深联华等公…

34-5 CSRF漏洞 - CSRF分类

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 1)GET 类型 传参: 参数连接在URL后面 POC构造及执行流程: 构造URL,诱导受害者访问点击利用利用标签进行攻击: 构造虚假URL,在链接上添加payload抓包获取数据包,通过CSRF POC…

JavaEE初阶Day 7:多线程(5)

目录 Day 7:多线程(5)1. 死锁2. 死锁场景3. 场景二:两个线程,两把锁4. 场景三:N个线程,M把锁5. 避免死锁问题6. 内存可见性问题 Day 7:多线程(5) 回顾synchr…

grpc-教程(golang版)

目录 一、介绍 二、环境准备 三、Golang中使用grpc 1.编写protobuf文件 2.服务端 3.客户端 四、proto文件详解 1.proto语法 2.数据类型 基本数据类型 数组类型 map类型 嵌套类型 编写风格 3.多服务 4.多个proto文件 五、流式传输 1.普通rpc 2.服务器流式 …

03-JAVA设计模式-责任链模式

责任链模式 什么是责任链模式 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,允许你将请求沿着处理者链进行传递。每个处理者均对请求进行某些处理,并可决定是否将请求沿着链传递下去。这种模式给予请求的处理…

使用 Meltano 将数据从 Snowflake 导入到 Elasticsearch:开发者之旅

作者:来自 Elastic Dmitrii Burlutskii 在 Elastic 的搜索团队中,我们一直在探索不同的 ETL 工具以及如何利用它们将数据传输到 Elasticsearch,并在传输的数据上实现 AI 助力搜索。今天,我想与大家分享我们与 Meltano 生态系统以及…

ThreadX:怎么确定一个线程应该开多少内存

ThreadX:如何确定线程的大小 在实时操作系统(RTOS)ThreadX中,线程的大小是一个重要的参数。这个参数决定了线程的堆栈大小,也就是线程可以使用的内存空间。那么,我们应该如何确定一个线程需要多大的字节呢…

应用实战|从头开始开发记账本2:基于模板快速开始

上期视频我们创建好了BaaS服务的后端应用。从这期视频开始,我们将从头开发一个互联网记账本应用。本期视频我们介绍一下如何使用模板快速开启我们的应用开发之旅。 应用实战|从头开始开发记账本2:基于模板快速开始 相关代码 本期视频我们介绍…

37% 的公开共享文件暴露个人信息

许多存储在 Google Drive、Slack 和其他协作工作应用程序等平台上的敏感文档几个月甚至几年都无人看管。根据 Metomic 的“金融服务数据安全状况”报告,这给公司带来了数据蔓延的挑战,也给个人及其雇主带来了重大的数据安全威胁。 86% 的文件在 90 天内…

问题汇总

一、TCP的粘包和拆包问题? TCP在发送和接受数据的时候,有一个滑动窗口来控制接受数据的大小,这个滑动窗口你就可以理解为一个缓冲区的大小。缓冲区满了就会把数据发送,数据包的大小是不固定的,有时候比缓冲区大有时候…

Git分布式版本控制系统——Git常用命令(二)

五、Git常用命令————分支操作 同一个仓库可以有多个分支,各个分支相互独立,互不干扰 分支的相关命令,具体如下: git branch 查看分支 git branch [name] 创建分支&#x…

04异常Lambda算法正则

异常 异常是什么? 异常是代码在编译或者执行的过程中可能出现的错误。避免异常的出现,同时处理可能出现的异常,让代码更稳健。 异常分为几类? 编译时异常、运行时异常。编译时异常:没有继承RuntimeExcpetion的异常…

Android适配平板屏幕尺寸

一、划分手机和平板 人为判断方法: 大于6英寸的就是平板。小于6英寸的都是手机 平板尺寸: 6英寸、7英寸、10英寸、14英寸… Android系统支持多配置资源文件,我们可以追加新的资源目录到你的Android项目中。命名规范: 资源名字-限制符 l…

c++调python接口

1. 新建run.py文件,并定义相关接口: import numpy as np from scipy.fftpack import fftdef str_add(str1,str2):return int(str1) int(str2)def my_sort(data):data.sort()return datadef aw_fft(data, Fs):N len(data)result np.abs(fft(xdata, n…

Git 解决分支冲突

一、前言 一直习惯于 add commit push 的三步走,偶然间看到了一个评论说在 push 之前还有一个 pull,小小的疑问就埋在了我的心里。于是我就先了解了 pull 的工作原理,就是先拉取代码(fetch)再合并分支(mer…

C语言-----结构体详解

前面已经向大家介绍过一点结构体的知识了,这次我们再来深度了解一下结构体。结构体是能够方便表示一个物体具有多种属性的一种结构。物体的属性可以转换为结构体中的变量。 1.结构体类型的声明 1.1 结构体的声明 struct tag {member-list;//结构体成员变量 }vari…

数字化时代:IT界的致富秘籍 —— 策略×态度×机遇

🌟 数字化时代:IT界的致富秘籍🚀 —— 策略态度机遇 在数字化浪潮中冲浪🏄‍♂️,IT行业犹如一片无限可能的蓝海。想要在这片汹涌的海洋中捕获财富,不是一件轻而易举的事。让我们一起深入探索,如…

(学习日记)2024.04.16:UCOSIII第四十四节:内存管理

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

Elastic 线下 Meetup 将于 2024 年 4 月 27 号在重庆举办

2024 Elastic Meetup 重庆站活动,由 Elastic、新智锦绣联合举办,现诚邀广大技术爱好者及开发者参加。 活动时间 2024年4月27日 13:30-18:00 活动地点 中国重庆 沙坪坝区学城大道62-1号研发楼一期b3栋1楼(瑞幸咖啡旁) 活动流程 14:00-14:50…

【电控笔记4】拉普拉斯-传递函数-pid

数据标幺化 拉普拉斯变换 欧拉公式 常见s变换 s变换性质