【测试开发】第五节.测试——自动化测试(Selenium工具)

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:Java测试开发

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!

前言

一、自动化测试的概念以及分类

二、Selenium—web自动化测试工具

2.1 自动化测试的一些前置工作

2.2 第一个自动化实例

2.3 总结

三、 Selenium常用方法

3.1 定位元素的方法

3.2 元素的操作

3.3 等待

3.3.1 强制等待

3.3.2 隐式等待

总结


前言


一、自动化测试的概念以及分类

自动化测试软件测试的自动化,在预设状态下运行应用程序或者系统.
预设条件包括正常和异常,最后评估运行结果。


自动化测试就是将人为驱动的测试行为转化为机器执行的过程。


自动化测试包括:

界面(UI)自动化测试——移动端、web端;

接口自动化测试;

单元自动化测试;


二、Selenium—web自动化测试工具

为什么我们选择这个自动化测试工具?


2.1 自动化测试的一些前置工作

我们要想使用Selenium来完成web自动化测试,首先要搭建起一个自动化测试环境。

  • Chrome浏览器
  • Chrome的驱动(ChromeDriver)——》驱动版本要和你的Chrome浏览器版本对应起来
  • Selenium工具包

配置操作步骤:

 Chrome驱动安装详见:java+selenium环境搭建

 Selenium工具包的导入:
在你要测试的Maven项目中导入该工具包


2.2 第一个自动化实例

在安装好浏览器对应的驱动后,新建一个Maven项目,导入Selenium工具包;


创建测试实例FirstAutoTest(新建一个类)


 展示实例:


2.3 总结

简单自动化示例主要包含五个步骤:

1、创建驱动实例,创建会话

2、访问网站

3、查找元素

4、操作元素

5、结束会话


三、 Selenium常用方法

3.1 定位元素的方法

1、CSS选择器——cssSelector


2、xpath选择器


3.2 元素的操作

当我们定位到了具体元素,接下来我就应该对元素进行相关操作了(比如输入文本内容、点击操作) 

常见的操作对象(元素)的方法有下面几个

1、click点击对象;

2、sendKeys 在对象 上模拟按钮输入;

3、clear清除对象输入的文本内容;

4、submit提交——》等价于click;

click 和 submit 都可以操作按钮;

注意:

【前提:submit 操作的是按钮】
可以使用 submit 的地方,都可以使用 click 来实现。


文本样式的超链接的触发,只能通过 click(点击)的方式来触发。
如果使用 sumbit 的方式来触发,就会报错。

在 selenium 官方文档中,更推荐使用 click
不推荐使用 submit。

————————————————————————————————————————

getText用于获取元素的文本信息


3.3 等待

3.3.1 强制等待

名词解释强制线程休眠一定时间,适合脚本调试时使用。

常用方法:

Thread.sleep(long millis);

  • 优点:适合脚本调试时使用;
  • 缺点:不能准确把握需要等待的时间,如果用例中大量使用,会浪费不必要的等待时间,影响用例的执行效率;

影响效率:

  • 操作未完成,等待结束,导致系统报错;
  • 操作完成,时间未到,导致浪费时间;

代码举例:
 

from selenium import webdriver
from time import sleepfrom selenium.webdriver.common.by import Byclass TestWait:def setup(self):self.driver = webdriver.Chrome()self.driver.get("https://www.baidu.com")def teardown(self):self.driver.quit()def test_wait(self):sleep(3)print("hello baidu")self.driver.find_element(By.ID, "kw").click()sleep(3)self.driver.find_element(By.ID, "kw").send_keys("北京")sleep(3)

3.3.2 隐式等待

名词解释:设置一个最长等待时间,轮循查看页面是否加载完成(默认 0.5 秒),如果超过最长等待时间页面未加载完成则抛出异常。

常用方法:driver.manage().timeouts().implicitlyWait(Duration duration);

  • 好处: 只需设置一次,全局都生效。如果超时时间内网页完成了全部加载,则立即进行下面的操作。比sleep()智能很多。
  • 劣势: 隐式等待需要等到网页所有元素都加载完成才会执行下面的操作,如果我需要操作的元素提前加载好了,但是其他无关紧要的元素还没有加载完成,那么还是需要浪费时间去等待其他元素加载完成。

代码举例:
 

from selenium import webdriver
from time import sleepfrom selenium.webdriver import Keys
from selenium.webdriver.common.by import Byclass TestWait:def setup(self):self.driver = webdriver.Chrome()self.driver.get("https://www.baidu.com")self.driver.maximize_window()self.driver.implicitly_wait(3)def teardown(self):self.driver.quit()def test_wait(self):print("hello baidu")self.driver.find_element(By.ID, "kw").click()self.driver.find_element(By.ID, "kw").send_keys("北京")self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)

注:隐式等待设置一个等待时间,轮询查找(默认0.5s)元素是否出现,如果在等待时间内没有出现,则抛出异常


总结

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

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

相关文章

匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参

文章目录 🚀前言🚀结构体✈️结构体类型的声明✈️结构体变量的创建与初始化✈️结构体类型的特殊声明✈️结构体的自引用✈️结构体的内存对齐🚁修改默认对齐数 ✈️结构体传参 🚀前言 在C语言中有着各种数据类型,这…

Linux部署HDFS集群

(一)VMware虚拟机中部署 ps、其中node1、node2、node3替换为自己相应节点的IP地址,或者host文件中配置过的主机名,或者看前置准备 或者查看前置准备:Linux部署HDFS集群前置准备 1.下载压缩包 https://www.apache.or…

ChatGPT 问世一周年之际,开源大模型能否迎头赶上?

就在11月30日,ChatGPT 迎来了它的问世一周年,这个来自 OpenAI 的强大AI在过去一年里取得了巨大的发展,迅速吸引各个领域的用户群体。 我们首先回忆一下 OpenAI和ChatGPT这一年的大事记(表格由ChatGPT辅助生成)&#x…

【模型报错记录】‘PromptForGeneration‘ object has no attribute ‘can_generate‘

通过这个连接中的方法解决: “PromptForGeneration”对象没有属性“can_generate” 期刊 #277 thunlp/OpenPrompt GitHub的 问题描述:在使用model.generate() 的时候报错:PromptForGeneration object has no attribute can_generate 解决方法…

MySQL安全相关——TDE和数据脱敏功能介绍

MySQL作为一款广泛使用的开源关系型数据库管理系统(RDBMS),其安全性一直是开发者和企业关注的重点。在MySQL中,有一些与安全相关的功能,其中包括Transparent Data Encryption(TDE)和数据脱敏。本文将对这些功能进行介绍。 一、Transparent Da…

Python一键采集京*东商品数据,保存表格,零基础也能学会

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 开发环境: python 3.8 pycharm 专业版 模块使用: requests >>> 发送请求 第三方库 (需要安装) parsel >>> 第三方库 用来提取网…

RHCSA学习笔记(RHEL8) - Part1.RH124

Chapter Ⅰ 入门 - Linux 开源系统,命令行,模块化(软件包的形势) - Windows 闭源Linux是类UNIX系统,mac系统也是类UNIX系统,所以二者的图形化界面比较相似 开源许可证:公共版权;宽…

学校图书管理系统设计

基于ASP.NET MVC技术的图书管理系统的设计与实现 摘要:图书管理系统是一套高新科学技术和图书知识信息以及传统历史文化完美结合的体现。它改变了传统图书收藏的静态书本式图书服务特征,实现了多媒体存取、远程网络传输、智能化检索、跨库无缝链接、创造…

《地理信息系统原理》笔记/期末复习资料(8. 数字高程模型)

目录 8. 数字高程模型 8.1 概述 8.1.1 数字高程模型概念 8.1.2 数字高程模型特点 8.2 DEM数据分布特征 8.2.1 格网状数据 8.2.2 离散数据 8.3 DEM的表示方法 8.3.1 数学方法 8.3.2 图形方法 8.3.3 DEM三维表达方法 8.4 TIN的生成方法 8.4.1 人工方法 8.4.2 程序自…

selenium 工具 的基本使用

公司每天要做工作汇报,汇报使用的网页版, 所以又想起 selenium 这个老朋友了。 再次上手,发现很多接口都变了, 怎么说呢, 应该是易用性更强了, 不过还是得重新看看, 我这里是python3。 pip安装…

数字员工「取数宝」上新!4大优势,解决电商取数难题

全域电商,是近几年的新趋势,几乎所有商家都在布局全域,追求全域增长。但商家发现,随着投入成本的上涨,利润却没有增加。 其中最为突出的是——商家为保证全域数据的及时更新,通过堆人头的方式完成每日取数…

带你用uniapp从零开发一个仿小米商场_10.开发一个占剩余窗口的滚动区域

首先是一个头部的tag切换栏,这个很简单,就不多说 源码奉上 <scroll-view scroll-x class"border scroll-row" style"height: 80rpx;"><view class"scroll-row-item" style"height: 80rpx;line-height: 80rpx;" v-for"(…

二分查找边界问题——排序数组找元素第一次出现和最后一次出现

二分查找的边界逼近问题&#xff1a; 下面的代码&#xff0c;第一个函数会向左边界逼近&#xff0c;第二个函数会像右边界逼近&#xff01; 考虑left5,right6这种情况&#xff0c;如果5&#xff0c;6的值都是满足的条件的怎么办&#xff1f; 如果mid(leftright1)/2&#xff0c;…

赤峰学院师资培养管理系统的设计与实现

摘 要 随着我国国民经济建设的蓬勃发展和信息技术的越发成熟&#xff0c;各个行业都在积极使用现代化的管理工具&#xff0c;不断改善企业的服务质量&#xff0c;提高工作效率。对师资培养进行现代化的管理&#xff0c;提高工作效率是师资培养管理系统的一大优点。本文是一篇关…

opencv学习二:加载显示图片

文章目录 加载显示图片&#xff08;一&#xff09;函数1.imread()读取图片&#xff08;1&#xff09;matplotlib和opencv中imread函数的区别 加载显示图片 &#xff08;一&#xff09;函数 1.imread()读取图片 Mat imread(const string& filename, int flags1 );第一个参…

Linux系统的常见命令十二,用户管理、、权限设置和组管理

目录 用户管理权限设置组管理 本文主要介绍Linux系统的用户管理、权限设置和组管理。 用户管理 在Linux系统中&#xff0c;用户管理是一个非常重要的部分&#xff0c;它涉及到用户账号的创建、权限的管理、密码的设置等。下面是一些用户管理的基本操作&#xff1a; 添加用户&…

自己开发组件更新到npm网站上 通过npm install 安装 保姆级别教程

文章目的 在项目开发中&#xff0c;经常通过npm install安装使用各种各样的npn包。本文记录如何自己实现的一个npm包 1. 环境准备 开发环境安装好,没有准备好环境 需要先安装哦 2. 创建Vue项目 初始化Vue项目&#xff1a;vue create xwdm-test 选择手动选择功能 Manually selec…

IP地理定位技术的服务内容详解

IP地理定位技术是一种通过IP地址确定设备或用户地理位置的技术&#xff0c;广泛应用于广告定向、网络安全、位置服务等领域。本文将深入探讨IP地理定位技术的服务内容&#xff0c;解析其在不同场景中提供的多种服务。 1. 准确的地理位置信息提供&#xff1a; IP地理定位技术的…

【面试题】JavaScript高级循环方法

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 除了for循环♻️&#xff0c;for-of,for-each循环♻️也是一个不错的选择 先说for-of循环♻️ 认识for-of循环♻️…

如何在手机上打开电脑端本地的网页

目录 一.手机端预览VSCode生成的网页站点二.手机端预览VS2022生成的 WebApi网页站点三.手机端预览VS2022生成的 vueapp前端四.总结 今天遇到了2个小问题&#xff1a;1.想在手机上运行VSCode上写好的网页代码。2.同样在手机上运行VS2022 WebApi生成的网页。查找了一晚上资料&…