自动化测试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:检查页面元素对应的文本信息是否正确

相关文章
|
14天前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
14天前
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
25 3
|
26天前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
21天前
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。
|
11天前
|
Web App开发 Linux Python
linux上安装selenium环境及测试
该文章提供了在Linux CentOS上安装Selenium环境、Chrome浏览器及Chromedriver的详细步骤,并演示了如何以无头模式进行测试。
27 0
|
22天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:如何用Selenium和Python打造高效测试脚本
【9月更文挑战第13天】在软件开发的海洋中,自动化测试是那抹不可或缺的亮色。它不仅提升了测试效率,还保障了产品质量。本文将带你领略使用Selenium和Python构建自动化测试脚本的魅力所在,从环境的搭建到脚本的编写,再到问题的排查,每一步都是对软件质量把控的深刻理解和实践。让我们开始这段探索之旅,解锁自动化测试的秘密吧!
15 0
|
22天前
|
JavaScript 前端开发 测试技术
Selenium2Library实现基于GUI的测试
Selenium2Library实现基于GUI的测试
28 0
|
2月前
|
Web App开发 Java 测试技术
自动化测试的新篇章:使用Selenium WebDriver进行高效测试
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试犹如一艘航船,带领着质量保证团队驶向效率与精准的彼岸。本文将揭开Selenium WebDriver的神秘面纱,通过实际案例引导您掌握这一强大的自动化测试工具。我们将从Selenium WebDriver的基础概念出发,逐步深入到代码示例,最后探讨其在现实项目中的应用场景和优势,旨在为您的软件测试之旅提供清晰的指南。
|
2月前
|
Web App开发 测试技术 持续交付
探索自动化测试:以Selenium和Python为例
【8月更文挑战第31天】自动化测试在现代软件开发中扮演着不可或缺的角色。本文将通过一个简化的示例,展示如何使用Selenium和Python进行Web应用的自动化测试。我们将从安装必要的工具开始,逐步构建一个简单的测试脚本,并执行它来验证其功能。通过这个过程,我们旨在揭示自动化测试的价值,并激励读者深入探索这一领域。
|
2月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【8月更文挑战第31天】在软件开发的世界中,自动化测试是提高产品质量和开发效率不可或缺的一环。本文将深入探讨Selenium这一强大的自动化测试工具,从其架构、优势到实战应用,一步步揭示如何利用Selenium框架提升软件测试的效率和准确性。通过具体的代码示例,我们将展示Selenium如何简化测试流程,帮助开发者快速定位问题,确保软件的稳定性和可靠性。无论你是测试新手还是资深开发者,这篇文章都将为你打开一扇通往高效自动化测试的大门。
下一篇
无影云桌面