软件测试—Selenium01

简介: 软件测试—Selenium01

🔎自动化测试

自动化测试的定义


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

后评估运行结果

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

自动化测试的分类


  • 常见的自动化测试包括
  • UI 自动化
  • 接口自动化
  • 单元测试自动化

🔎Selenium

Selenium 是什么


Selenium 是应用于 web 自动化测试的框架

Selenium 的特点


  • 支持各种浏览器(Chrome, Edge, Firefox…)
  • 支持各种语言(Java, Python, C#…)
  • 有着较多的 API

Selenium 的原理


Selenium + Java 的环境搭建


关于 Selenium + Java 的环境搭建

可以参考这篇文章

Selenium 中常用的 API

By.cssSelector()


元素的定位 findElement
标签选择器 div, span, a...
类选择器 .class
id 选择器 #id
后代选择器 父级选择器 子级选择器

下面以百度的输入框为例

分别介绍元素的几种定位方式

(1) 标签选择器

通过标签名定位元素

WebElement element = webDriver.findElement(By.cssSelector("标签名"));

webDriver . findElement() 的返回值类型是 WebElement

(2)类选择器

// 创建 Chrome 选项
ChromeOptions options = new ChromeOptions();
// 允许所有请求
options.addArguments("--remote-allow-origins=*");
// 创建驱动
WebDriver webDriver = new ChromeDriver(options);
// 打开百度首页
webDriver.get("https://www.baidu.com/");
// 找到百度搜索框
WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));

(3) id 选择器

// 创建 Chrome 选项
ChromeOptions options = new ChromeOptions();
// 允许所有请求
options.addArguments("--remote-allow-origins=*");
// 创建驱动
WebDriver webDriver = new ChromeDriver(options);
// 打开百度首页
webDriver.get("https://www.baidu.com/");
// 找到百度搜索框
WebElement element = webDriver.findElement(By.cssSelector("#kw"));

(4) 后代选择器

// 创建 Chrome 选项
ChromeOptions options = new ChromeOptions();
// 允许所有请求
options.addArguments("--remote-allow-origins=*");
// 创建驱动
WebDriver webDriver = new ChromeDriver(options);
// 打开百度首页
webDriver.get("https://www.baidu.com/");
// 找到百度搜索框
WebElement element = webDriver.findElement(By.cssSelector("span input"));

By.xpath()


绝对路径

// 创建 Chrome 选项
ChromeOptions options = new ChromeOptions();
// 允许所有请求
options.addArguments("--remote-allow-origins=*");
// 创建驱动
WebDriver webDriver = new ChromeDriver(options);
// 打开百度首页
webDriver.get("https://www.baidu.com/");
// 找到百度标题(百度一下, 你就知道)
WebElement element = webDriver.findElement(By.xpath("/html/head/title"));

绝对路径以 / 开头

相对路径

元素的定位 findElement
相对路径 + 索引 //form/span[1]/input
相对路径 + 属性值 //input[@class="s_ipt"]
相对路径 + 通配符 //*[@*="su"]
相对路径 + 文本匹配 //a[text()="新闻"]

相对路径以 // 开头

(1) 相对路径 + 索引

WebElement element = webDriver.findElement(By.xpath("//form/span[1]/input"));
• 1

下标从1开始, 不是从0开始

span[1]表示第1个 span 标签

如果不写(span), 默认表示 span[1]

(2) 相对路径 + 属性值

WebElement element = webDriver.findElement(By.xpath("//input[@class=\"s_ipt\"]"));
• 1

(3) 相对路径 + 通配符

WebElement element = webDriver.findElement(By.xpath("//*[@*=\"kw\"]"));

(4) 相对路径 + 文本匹配

webDriver.findElement(By.xpath("//a[text()=\"新闻\"]")).click();
• 1

By.cssSelector() 与 By.xpath() 的比较

cssSelector() 选择器定位元素效率更高

🔎操作测试对象


  • click() 点击对象
  • sendKeys() 在对象上模拟按键输入
  • clear() 清空对象中的内容
  • submit() 提交
  • getText() 获取元素文本信息
  • getAttribute() 将标签所对应的内容转换为字符串
  • 以百度首页为例
  • String buttonValue = webDriver.findElement(By.cssSelector("#su")).getText();
  • 无法通过上述代码输出标签的内容
  • String buttonValue = webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
  • 可以通过 getAttribute() 方法将 id = su 对应的标签中的内容转换为字符串

click() 与 submit() 的区别


submit() 无法提交标签在 form 表单之外的内容

click() 可以提交标签在 form 表单之外的内容

以百度首页为例

新闻标签在 form 表单之外

(1) 使用 click()

public static void main(String[] args) {
      // 创建 Chrome 选项
      ChromeOptions options = new ChromeOptions();
      // 允许所有请求
      options.addArguments("--remote-allow-origins=*");
      // 创建驱动
      WebDriver webDriver = new ChromeDriver(options);
      // 打开百度首页
      webDriver.get("https://www.baidu.com/");
      webDriver.findElement(By.xpath("//a[text()=\"新闻\"]")).click();
}


(2) 使用 submit()

public static void main(String[] args) {
      // 创建 Chrome 选项
      ChromeOptions options = new ChromeOptions();
      // 允许所有请求
      options.addArguments("--remote-allow-origins=*");
      // 创建驱动
      WebDriver webDriver = new ChromeDriver(options);
      // 打开百度首页
      webDriver.get("https://www.baidu.com/");
      webDriver.findElement(By.xpath("//a[text()=\"新闻\"]")).submit();
}

🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍

大家有什么不太理解的,可以私信或者评论区留言,一起加油

相关文章
|
1月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
99 5
|
1月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
1月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
259 5
|
1月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
16天前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
13 0
|
1月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
254 1
|
1月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
2月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
2月前
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
46 3
|
2月前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。