探索自动化测试工具:Selenium的威力与应用

简介: 探索自动化测试工具:Selenium的威力与应用

🍋引言

自动化测试已经成为现代软件开发中不可或缺的一部分。它不仅可以提高测试的效率,还可以降低错误率,帮助团队更快地交付高质量的软件。在自动化测试工具中,Selenium一直是一个备受欢迎的选择。本文将介绍Selenium的基本概念、特点以及如何在不同场景中应用它来实现自动化测试。

🍋什么是Selenium?

Selenium是一个用于自动化浏览器操作的工具套件,最初是为Web应用程序测试而创建的。它支持多种编程语言,包括Java、Python、C#等,因此适用于各种开发环境。Selenium的主要目标是模拟用户在浏览器中的操作,例如点击链接、填写表单、提交数据等,以验证Web应用程序的功能是否正常工作。

🍋Selenium的特点

  1. 跨浏览器兼容性

Selenium可以在多种主流浏览器中运行,包括Chrome、Firefox、Edge等。这使得开发人员可以确保他们的Web应用程序在各种浏览器中都能正常运行。

  1. 多语言支持

Selenium支持多种编程语言,这意味着开发人员可以使用他们熟悉的语言来编写自动化测试脚本。这种多语言支持使得Selenium成为一个受欢迎的选择,因为它适用于各种技术栈。

  1. 灵活性和可扩展性

Selenium提供了丰富的API,允许开发人员执行各种操作,如查找元素、模拟用户交互等。此外,它还支持通过插件和扩展来增强功能,满足不同项目的需求。

  1. 社区支持和文档丰富

Selenium拥有庞大的社区,开发人员可以轻松找到各种教程、文档和解决方案。这使得学习和使用Selenium变得更加容易。

🍋如何使用Selenium进行自动化测试?

下面我将根据步骤,一步一步来实现自动化测试

步骤1:安装Selenium

首先,您需要安装Selenium库,以便在您选择的编程语言中使用。这通常可以通过包管理器来完成。例如,在Python中,您可以使用以下命令来安装Selenium:

pip install selenium

可以添加清华源,让下载更快一点

pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple selenium

步骤2:选择浏览器驱动

Selenium需要一个浏览器驱动程序,以便与浏览器进行通信。您需要根据您选择的浏览器下载相应的驱动程序,例如Chrome浏览器需要Chrome WebDriver。

可以看一眼自己的Chrome版本,选择与版本相对应的即可

链接如下:官网

上面是114版本之前的

链接如下:官网

上面是新版的

步骤3:编写测试脚本

使用Selenium编写测试脚本来模拟用户操作。以下是一个简单的Python示例,用于打开百度首页并搜索关键字:

from selenium.webdriver.chrome.service import Service
from selenium import webdriver
service = Service(executable_path='D:/software/ChromeDriver/chromedriver-win32/chromedriver-win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)
driver.set_window_size(1200, 900)
driver.get('https://www.baidu.com/')
input()  

下面是每条命令的详细介绍

  • from selenium.webdriver.chrome.service import Service: 这行代码导入了Selenium库中用于管理浏览器服务的Service类。Service类允许您配置和启动浏览器驱动程序。
  • from selenium import webdriver: 这行代码导入了Selenium库的webdriver模块,它包含了与不同浏览器的交互功能。
  • service = Service(executable_path=‘D:/software/ChromeDriver/chromedriver-win32/chromedriver-win32/chromedriver.exe’): 在这行代码中,您创建了一个名为service的Selenium服务对象,通过指定Chrome浏览器驱动程序的可执行路径来配置服务。在这里,您提供了Chrome浏览器驱动程序的路径。
  • driver = webdriver.Chrome(service=service): 这行代码创建了一个名为driver的Chrome浏览器对象,并将上面创建的service传递给它,以便在服务上启动Chrome浏览器。这个driver对象将用于与浏览器进行交互。
  • driver.set_window_size(1200, 900): 这行代码设置了浏览器窗口的大小为宽度1200像素和高度900像素。这个操作可以用来模拟不同的屏幕分辨率。
  • driver.get(‘https://www.baidu.com/’): 这行代码使用driver对象打开了百度网站(https://www.baidu.com/)。浏览器将自动导航到指定的URL。
  • input(): 这行代码通过调用input()函数等待用户的输入。脚本会一直保持运行状态,直到用户在命令行中输入任何字符,然后按回车键。一旦用户输入内容并按下回车,脚本将继续执行后续操作,或者在没有后续操作时退出。

我们可以再试试向输入框中属于文字

这里只需要添加一个库并且编写一行底代码即可

from selenium.webdriver.common.by import By
driver.find_element(By.ID, 'kw').send_keys('馒头')

下面是每条命令的详细介绍

  • from selenium.webdriver.common.by import By: 这行代码导入了Selenium库中的By类,它用于指定定位元素的方式。By类提供了不同的选择器选项,例如ID、CSS选择器、XPath等,以便在页面上定位元素。
  • driver.find_element(By.ID, ‘kw’): 这行代码使用driver对象的find_element方法来查找页面上具有特定ID属性值的元素。具体来说,它使用了By.ID选择器,并传递了一个参数 ‘kw’,这表示要查找具有ID属性值为 ‘kw’ 的元素。
  • .send_keys(‘馒头’): 一旦找到具有指定ID属性的元素(在这种情况下,是ID为 ‘kw’ 的元素,通常是百度搜索框),send_keys 方法被调用,将文本字符串 ‘馒头’ 输入到该元素中。这相当于在搜索框中键入关键字“馒头”。

🍋行为链

Selenium的行为链(ActionChains)是一种用于模拟用户在浏览器中执行各种鼠标和键盘操作的方法。这些操作可以包括鼠标移动、点击、拖放、键盘按键等,允许您模拟用户在Web应用程序上的交互行为。行为链通常用于实现复杂的用户操作,例如鼠标悬停、拖放元素等。

以下还是以百度首页作为实验案例,通过输入馒头,并点击搜索按钮,完整代码如下

from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
service = Service(executable_path='D:/software/ChromeDriver/chromedriver-win32/chromedriver-win32/chromedriver.exe')
driver = webdriver.Chrome(service=service)
# 打开百度首页
driver.get("https://www.baidu.com")
# 找到搜索框元素并输入关键字"馒头"
search_box = driver.find_element(By.ID, "kw").send_keys("馒头")
# 找到搜索按钮并单击它
search_button = driver.find_element(By.ID, "su")
search_button.click()
# 等待一段时间以查看搜索结果(可以省略)
time.sleep(5)
# 关闭浏览器
driver.quit()

🍋用例示例:Web应用程序自动化测试

除了上面的示例之外,Selenium还可以用于各种Web应用程序测试场景,包括:

  • 表单测试:自动填写和提交表单,检查数据是否正确提交。
  • UI测试:模拟用户交互,确保界面元素的可见性和可点击性。
  • 性能测试:测量页面加载时间和性能指标,以优化用户体验。
  • 跨浏览器测试:在多种浏览器中运行相同的测试,确保一致性。
  • 集成测试:将Selenium与其他测试工具和框架集成,以进行更复杂的测试。

🍋Selenium的一些常用语法和方法

语法/方法 描述
from selenium import webdriver 导入Selenium库
from selenium.webdriver.common.by import By 导入定位策略的枚举类
from selenium.webdriver.support.ui import WebDriverWait 导入等待元素加载的类
from selenium.webdriver.support import expected_conditions as EC 导入等待条件的类
driver = webdriver.Chrome() 创建浏览器对象,可以选择不同的浏览器
driver.get(‘https://example.com’) 打开指定的URL
driver.find_element(By.ID, ‘element_id’) 查找元素,可以使用不同的定位策略
element.click() 单击元素
element.send_keys(‘文本’) 在元素上输入文本
element.clear() 清空元素内容
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, ‘element_id’))) 等待元素出现
driver.switch_to.window(‘window_name’) 切换到指定窗口
driver.switch_to.frame(‘frame_name’) 切换到指定iframe
driver.execute_script(‘javascript_code’) 执行JavaScript代码
driver.save_screenshot(‘screenshot.png’) 保存屏幕截图
driver.quit() 关闭浏览器并退出驱动程序

顺便再总结一下常用的选取元素的方法

定位策略 示例 描述
通过ID查找元素 driver.find_element(By.ID, ‘element_id’) 使用元素的ID属性来定位元素。
通过名称查找元素 driver.find_element(By.NAME, ‘element_name’) 使用元素的名称属性来定位元素。
通过标签名查找元素 driver.find_element(By.TAG_NAME, ‘element_tag’) 使用元素的HTML标签名称来定位元素。
通过类名查找元素 driver.find_element(By.CLASS_NAME, ‘element_class’) 使用元素的类名属性来定位元素。
通过CSS选择器查找元素 driver.find_element(By.CSS_SELECTOR, ‘css_selector’) 使用CSS选择器来定位元素。
通过XPath查找元素 driver.find_element(By.XPATH, ‘xpath_expression’) 使用XPath表达式来定位元素。
通过链接文本查找元素 driver.find_element(By.LINK_TEXT, ‘link_text’) 使用链接文本来定位链接元素。
通过部分链接文本查找元素 driver.find_element(By.PARTIAL_LINK_TEXT, ‘partial_link_text’) 使用部分链接文本来定位链接元素。

🍋结论

Selenium是一个强大的自动化测试工具,适用于各种测试场景。它的跨浏览器兼容性、多语言支持、灵活性和可扩展性使其成为自动化测试领域的首选工具之一。通过掌握Selenium,开发人员可以更轻松地实现自动化测试,提高软件质量,加速开发周期,并减少测试成本。如果您还没有尝试过Selenium,那么现在就是时候开始了!

下一节将进行selenium的实战训练

挑战与创造都是很痛苦的,但是很充实。

相关文章
|
2天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
6 2
|
2天前
|
Java 测试技术 持续交付
深入理解与应用Selenium WebDriver进行自动化测试
【4月更文挑战第25天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速市场发布的关键步骤。Selenium WebDriver作为业界广泛采用的自动化测试工具之一,提供了一种灵活且高效的方式来模拟用户与Web应用程序交互。本文将探讨Selenium WebDriver的核心概念、架构以及实际应用中的技巧和最佳实践。通过深入分析其工作原理及常见问题解决方案,旨在帮助测试工程师提升测试效率,确保测试结果的准确性和可靠性。
|
3天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
32 2
|
5天前
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
19 0
|
7天前
|
Web App开发 JavaScript 前端开发
深入理解自动化测试框架Selenium的设计与实现
【4月更文挑战第20天】 在软件测试领域,自动化测试已成为提升测试效率和确保产品质量的关键手段。Selenium作为一款广泛使用的开源自动化测试框架,其设计精巧且功能强大,为Web应用提供了一种灵活、高效的测试解决方案。本文将深入探讨Selenium的核心架构与实现细节,解析其如何通过模拟用户操作来执行测试用例,以及它如何适应不断变化的Web技术标准。通过对Selenium内部机制的剖析,旨在帮助测试工程师更好地掌握该工具,并在测试实践中发挥其最大效能。
|
8天前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)
【4月更文挑战第17天】其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇。那是因为这个比较重要,所以宏哥专门为她量身定制了一篇。FluentWait是Selenium中功能强大的一种等待方式,翻译成中文是流畅等待的意思。在介绍FluentWait之前,我们来讨论下为什么需要设置等待,我们前面介绍了隐式等待和显式等待。
33 3
|
10天前
|
Java 测试技术 定位技术
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
【4月更文挑战第15天】本文介绍了如何使用Selenium进行浏览器窗口切换以操作不同页面元素。首先,获取浏览器窗口句柄有两种方法:获取所有窗口句柄的集合和获取当前窗口句柄。然后,通过`switchTo().window()`方法切换到目标窗口句柄。在项目实战部分,给出了一个示例,展示了在百度首页、新闻页面和地图页面之间切换并输入文字的操作。最后,文章还探讨了在某些情况下可能出现的问题,并提供了一个简单的本地HTML页面示例来演示窗口切换的正确操作。
38 0
|
15天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
1月前
|
Web App开发 Python
在ModelScope中,你可以使用Python的浏览器自动化库
在ModelScope中,你可以使用Python的浏览器自动化库
17 2
|
1月前
|
存储 BI 数据处理
Python自动化 | 解锁高效办公利器,Python助您轻松驾驭Excel!
Python自动化 | 解锁高效办公利器,Python助您轻松驾驭Excel!