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

news2024/11/27 19:26:53

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

博客首页:未央.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 sleep

from selenium.webdriver.common.by import By


class 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 sleep

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By


class 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.coloradmin.cn/o/1262734.html

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

相关文章

四川竹哲电子商务有限公司深耕抖音电商服务领域

随着数字经济的飞速发展,抖音电商服务成为了越来越多企业的首选。在这个充满机遇与挑战的时代,四川竹哲电子商务有限公司以其卓越的实力和专业的服务,成为了抖音电商服务领域的佼佼者。 一、深耕抖音电商服务领域 作为一家专注于抖音电商服务…

RT-DETR算法优化改进:AKConv(可改变核卷积),即插即用的卷积,效果秒杀DSConv | 2023年11月最新发表

💡💡💡本文全网首发独家改进:可改变核卷积(AKConv),赋予卷积核任意数量的参数和任意采样形状,为网络开销和性能之间的权衡提供更丰富的选择,解决具有固定样本形状和正方形的卷积核不能很好地适应不断变化的目标的问题点,效果秒殺DSConv 1)AKConv替代标准卷积进行…

数据脱敏方案

数据脱敏方案 什么是数据脱敏 数据脱敏的定义 数据脱敏百度百科中是这样定义的: 数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏…

app上架一直显示审核中状态要怎么处理?

当你提交一个应用到App Store上时,它会经历一个审核过程。在这个过程中,苹果的审核人员会检查你的应用是否符合苹果的规定和标准。这个过程通常需要几天的时间,但是如果你的应用一直显示“审核中”状态,那么可能会有一些原因。 1…

月底年末如何成交?速看!外贸销冠都在用的催单技巧,让成交量飙升!

年底将至!对于外贸人来说,这是一个重要的订单冲刺时机。那么,怎么向国外客户开口催单? 01 掌握客户不下单的原因 1. 观望和犹豫 这种比较难搞,因为客户本身需求不够强烈,可谓不是“刚需”。 对于这种客…

导致Facebook广告投放不成功的原因

Facebook是全球最大的社交媒体平台之一,也是众多跨境卖家选择广告投放的首选平台,但也还是会有很多跨境卖家在Facebook上推广效果不佳。那么本文小编讲一下导致Facebook广告投放不成功的原因以及相应解决方法。 1、受众群体太少 Facebook有个要求就是广告…

MT8390(Genio 700)安卓核心板_MTK联发科工业AI主板Linux开发板

MT8390 (Genio 700) 安卓核心板是一款高性能边缘人工智能物联网平台,尺寸仅为45452.2mm。该平台提供高度响应的边缘处理、先进的多媒体功能、各种传感器和连接选项,同时支持多任务操作系统。 Genio 700处理器拥有PS APU性能,高效的芯片内人工…

MPLS和互联网专线是什么?

MPLS专线和互联网专线是企业网络连接的常见方式。MPLS专线基于多协议标签交换(MPLS)该技术利用专线连接两个或多个分支机构,提供高质量的数据传输服务。互联网专线是基于公共知识产权基础设施的连接方式,成本低,但速度…

Linux fork笔试练习题

1.打印结果&#xff1f; #include <stdio.h> #include <unistd.h> #include <stdlib.h>int main() {int i0;for(;i<2;i){fork();printf("A\n");}exit(0); } 结果打印 A A A A A A 2.将上面的打印的\n去掉,结果如何? printf("…

laravel8中常用路由使用(笔记四)

目录 1、框架路由目录统一放该目录 2、基本路由,路由都调用Route方法 3、控制器使用路由 4、路由参数 5、路由组 6、命名路由 7、命令查看当前路由列表 8、路由缓存 在Laravel 8中&#xff0c;路由定义了应用程序中接受请求的方式。它们定义了URL和相应的控制器方法之间的…

NX二次开发UF_MTX3_ortho_normalize 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_MTX3_ortho_normalize Defined in: uf_mtx.h void UF_MTX3_ortho_normalize(double mtx [ 9 ] ) overview 概述 Returns a 3x3 matrix whose direction vectors are orthogonal…

Leetcode刷题之设计循环队列(C语言版)

Leetcode刷题之设计循环队列&#xff08;C语言版&#xff09; 一、题目描述二、题目示例三、题目解析Ⅰ、typedef structⅡ、MyCircularQueue* myCircularQueueCreate(int k)Ⅲ、bool myCircularQueueIsEmpty(MyCircularQueue* obj)Ⅳ、bool myCircularQueueIsFull(MyCircularQ…

JOSEF 漏电继电器JHOK-ZBL1 DH-50L 系统1140V 电源AC220V

系列型号&#xff1a; JHOK-ZBL多档切换式漏电&#xff08;剩余&#xff09;继电器 JHOK-ZBL1多档切换式漏电&#xff08;剩余&#xff09;继电器 JHOK-ZBL2多档切换式漏电&#xff08;剩余&#xff09;继电器 JHOK-ZBM多档切换式漏电&#xff08;剩余&#xff09;继电器 …

机器学习实战第3天:手写数字识别

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 ​ 文章目录 一、任务描述 二、数据集描述 三、主要代码 &#xff08;1&#xff09;主要代码库的说明与导入方法 &#xff08;2&#xff09;数据预…

Coremail出席2023信息技术应用创新论坛

11月25日&#xff0c;2023信息技术应用创新论坛在常州开幕。江苏省工业和信息化厅副厅长池宇、中国电子工业标准化技术协会理事长胡燕、常州市常务副市长李林等领导出席论坛并致辞。中国工程院院士郑纬民出席并作主题报告。来自产学研用金等各界的千余名代表参加本次论坛。作为…

西南科技大学模拟电子技术实验二(二极管特性测试及其应用电路)预习报告

目录 一、计算/设计过程 二、画出并填写实验指导书上的预表 三、画出并填写实验指导书上的虚表 四、粘贴原理仿真、工程仿真截图 一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入…

有哪些不错的golang开源项目?

前言 下面是github上的golang项目&#xff0c;适合练手&#xff0c;可以自己选择一些项目去练习&#xff0c;整理不易&#xff0c;希望能多多点赞收藏一下&#xff01;废话少说&#xff0c;我们直接进入正题>>> 先推荐几个教程性质的项目&#xff08;用于新手学习、…

【小白进阶】Linux 调试大法——gdb

初衷 gdb调试是每一个后端开发工程师所必备的技能&#xff0c;我们工作总是会用gdb协助我们去分析和调试问题。但是大部分同学的技能仅停留在最基础的查看问题。即gdb program -->r --> 问题复现 --> bt 查看源码中的哪一行出现了错误。再稍微熟练点的&#xff0c;可能…

Unity WebGL通过URL的形式接收参数执行初始化

参考博客&#xff1a; http://t.csdnimg.cn/QnfhK 问题背景&#xff1a; 需要在外面的网页指定WebGL的打开初始化逻辑。 步骤&#xff1a; 1.配置jslib&#xff0c;用文本文件创建即可&#xff0c;"__Internal.jslib"。 2.加入一段代码&#xff1a; mergeInto(…

如何使用Cloudreve将个人电脑打造为私有云盘并实现远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 云存储概念兴起后&#xff0c;现在市面上也已经有了很多公有云盘。但一段时间后…