自动化测试Selenium【基础篇一】

简介: 自动化测试Selenium【基础篇一】

🍎一.什么是自动化测试

🍒1.1 自动化测试介绍


自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程


自动化测试包括UI自动化,接口自动化,单元测试自动化

按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自贡话测试产出投入比(ROI),可以用较少的投入获得很好的收益

图片来源百度


image.png


🍒1.2 单元测试

最大的投入应该在单元测试上,单元测试运行的频率也更加高

🍒1.3 接口自动化

接口测试就是API测试,相对于UI自动化API自动化更加容易实现,执行起来也更稳定。

接口自动化的有以下特点:

● 可在产品前期,接口完成后介入
● 用例维护量小
● 适合接口变动较小,界面变动频繁的项目


常见的接口自动化测试工具有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman等

🍒1.4 UI自动化


虽然测试金字塔告诉我们尽量多做API层的自动化测试,但是UI层的自动化测试更加贴近用户的需求和软件系统的实际业务。并且有时候我们不得不进行UI层的测试


UI自动化的特点:

● 用例维护量大
● 页面相关性强,必须后期项目页面开发完成后介入
● UI测试适合与界面变动较小的项目

UI自动化测试的好处:


降低大型系统的由于变更或者多期开发引起的大量的回归测试的人力投入,这可能是自动化测试最主要的任务,特别是在程序修改比较频繁,效果是非常明显的,自动化测试前期人力投入较多,但后期进入维护期后,可节省大量人力,而手工测试后期需要增加大量人力用于回归测试,减少重复测试的时间,实现快速回归测试,创建优良可靠的测试过程,减少人为错误,可以运行更多更繁琐的测试,可以执行一些手工测试困难或不可能进行的测试,更好的利用资源,测试脚本的重用性



🍒1.5 为什么选择selenium作为我们的web自动化工具?

选择它原因的:


(1)开源免费
(2〉支持多浏览器。如Chrome、Firefox、IE、edge、Safari. .3)支持多系统。如Linux、Windows、MacOS
(4)支持多语言。如java、python. . . .
(5) selenium包底层有很多可使用的API


🍒1.6什么是驱动


驱动的工作原理是:

汽车有驱动,两轮驱动、四轮驱动可以让汽车跑起来计算机里也有驱动程序,可以驱动计算机和设备工作起来打开浏览器也需要驱动

人工测试情况下(人工手动的驱动打开浏览器)自动化来说﹐代码不能够直接打开浏览器,需要借助驱动程序来协助打开浏览器

代码可以驱使驱动来打开浏览器

selenium驱动浏览器三者之间的关系



726af5ba909a4e9da0c19f99053972f6.png



🍎二.Selenium基本语法

🍒2.1 创建驱动

这里我们只需要获取一个浏览器驱动就可以了


73cdfebf17934d57a6b10a3040c4ac4d.png

public class seleniumTest {
    ChromeDriver driver1 = new ChromeDriver();   // 创建谷歌浏览器驱动
    FirefoxDriver driver2 = new FirefoxDriver(); // 创建火狐浏览器驱动
}


🍒2.2 定位元素方法

我们先使用driver.findElement()来定位页面元素

之后我们在.findElement()方法中可以看到两种定位元素的方法一个是 css定位元素,另一个是xpath定位元素方法


bc65b4b3a7e1492db71c279345aa0831.png

fn + F12就可以进行获取元素

使用这个箭头就可以获取到你想要获取的元素

6ef60eb1ac2941cc8f4a29387c6ecbd1.png

使用箭头点击输入框,然后右击3那点击复制就可以获取到元素,


622d7fa30fca4d83989bc8773754b45b.png


756cca1b353a424ca749e6ec89069456.png


🍉2.2.1 css

driver.findElement(By.cssSelector("输入你想获取到的元素"));


3cb01c7454e54b179c5e8ca4e9d28262.png



🍉2.2.2 xpath

driver.findElement(By.xpath("输入你想获取到的元素"));

a928ca2b51c84dccb9053f28eb900ff6.png



🍒2.3 元素的操作

🍉2.3.1 模拟按键输入 sendKeys

放我们进行测试时就需要在输入框内输入我们想要输入测试的数据 记得要加 " "

driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");


37ee627bbf324ff9b1cced8de75bf0d8.png


🍉2.3.2 点击 click 提交 submit

click和lsubmit都可以操作按钮

可以click不一定可以submit但是页面的任何元素都可以click , selenium官方文档里不建议使用submit

driver.findElement(By.cssSelector("##su")).click();

dc4f5541e7c04cc3b9cf8fb236b0afbe.png



🍉2.3.3 清除对象输入的文本 clear

driver.findElement(By.cssSelector("#kw")).clear();



b1a18d617ff644bba8f66377464ab43e.png


f4c58306e4234f82961dfe014c779ce0.png


🍉2.3.4 获取文本getText()

String str = driver.findElement(By.cssSelector("##su")).getText();

🍒2.4 等待


代码的执行速度比较快,而前端页面渲染的速度相对较慢一点,可能导致的结果是:代码已经执行到下一步了,页面还没有渲染出来,元素找不到

等待又分为三个:强制等待、隐式等待、显式等待


🍉2.4.1 强制等待

让程序暂停一会,等待指定的时间之后继续执行下一步


   //不添加等待的话页面没有渲染完成,导致最后一步的查找页面元素失败,添加强制等待3s再进行页面元素查找,结果成功   
        driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");
        driver.findElement(By.cssSelector(" #su ")).click();
        Thread.sleep( 3000);


优点:语法简单,适合调试的时候用


缺点:需要等待固定的时间,造成测试时间的大量消耗,大大的减少了自动化的测试效率


1个测试用例使用强制等待,平均时间为3~5s以5s为例

假如说web自动化有100个,那么强制等待的时间100*5S=500s=8min20s自动化执行的时间还没有加上,预计自动化执行时间可能就超过15min甚至更久


🍉2.4.2 隐式等待(整个生命周期)

隐式等待作用在webdriver整个生命周期,只要没有走到driver.quit即没有退出浏览器,隐式等待都是一直存在的


在规定的时间范围内,轮询等待元素出现之后就立即结束,如果在规定的时间内元素仍然没有出现,则会抛出一MoSuchElementException异常

        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));

优点:节省了大量的等待时间,元素展示之后就可以直接执行下一步,执行效率高

缺点:需要等待所有的元素都展现才会执行下一步,仍然会有额外的时间上的浪费

🍉2.4.3 显示等待


WebDriverWait webDriverWait = new WebDriverWait(driver, Duration.ofSeconds(10));

第一参数: webdriver对象

第二个参数:Duration类方法,用于设置强制等待的时间


等待什么时候为止,即等待括号里的条件满足为止,如果条件在指定时间内没有满足,就抛出异常


优点:针对某一个元素来进行等待,极大降低了自动化整体的等待时间


缺点:写法更为复杂presenceOfElementLocated:检查页面是否存在对应的元素textToBe:检查页面元素对应的文本信息是否正确

相关文章
|
20天前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
67 8
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
130 5
|
2月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
111 4
|
2月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
2月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
418 5
|
2月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
1月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
37 0
|
2月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
347 1
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
2月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
53 0