在当今快速发展的数字世界中,自动化已成为软件测试不可或缺的一部分。Selenium 是众多自动化工具中最受欢迎的工具之一。Selenium 是一个开源工具,可以有效地让您自动化网页应用程序。当与 Python 结合使用时,Python 是一种易于学习且功能强大的编程语言,Selenium 在测试中的效果更为显著。
本指南是使用 Python 的 Selenium 的全面介绍,可以帮助您开始编写第一个自动化脚本。
什么是 Selenium?
Selenium 是一个开源自动化框架,帮助在不同浏览器和平台上自动化网页应用程序。它提供了一套工具,包括:
- Selenium WebDriver — 自动化与网页应用程序的交互。
- Selenium IDE — 这是一个浏览器扩展,帮助录制和回放测试。
- Selenium Grid — 它帮助在多台机器和浏览器上并行运行多个测试。
在本文中,我们将看到如何使用 Python 通过 Selenium WebDriver 自动化 Selenium 测试。
使用Python设置Selenium
在开始编写自动化测试脚本之前,我们需要设置开发环境。
安装Python
首先,您需要确保系统中已安装Python。您可以从官方Python网站下载最新版本。
要验证安装,请打开终端或命令提示符并输入以下命令-
python3 --version
您将看到系统中安装的Python版本。
安装Selenium
接下来,您可以使用pip安装Selenium包。为此,请在终端或命令提示符中输入以下命令-
pip3 install selenium
您可以使用以下命令检查安装的Selenium版本-
pip3 freeze | grep “selenium”
安装IDE – PyCharm
要开始编写Python代码,您需要一个IDE。我们将在本教程中使用PyCharm社区版。您可以按照官方网站上的步骤下载IDE。
编写您的第一个Python Selenium脚本
- 现在您的开发环境已准备就绪,您可以开始编写第一个Python Selenium自动化测试。我们将编写一个基本步骤,其中将执行以下步骤-
- 打开 Google Chrome。
- 导航到 www.google.com。
- 获取网页的标题。
- 关闭浏览器驱动程序。
让我们来看看如何开始我们的第一个 Selenium 测试脚本与 Python。
- 启动 PyCharm 后,导航到文件,然后点击新建项目。
接下来,输入项目的名称并点击创建按钮。您还可以选择项目的位置。 - 现在您可以在 .py 文件中创建您的第一个测试。您只需右键单击您的项目,点击新建,然后选择 Python 文件。
- 文件创建后,您可以开始编写您的第一个 Selenium 脚本与 Python。以下是上述简单测试用例的代码。
#导入 Selenium 所需的库
from selenium import webdriver
#初始化 webdriver
driver = webdriver.Chrome()
#导航到 google.com
driver.get("https://www.google.com")
#获取标题并打印
print(driver.title)
#关闭 webdriver 实例
driver.quit()
现在,运行测试并查看结果,观察Chrome浏览器的启动、页面标题在控制台窗口中的打印,以及最后浏览器实例的关闭。
使用Python的基本Selenium命令
打开网页
我们使用基本的 get()
方法通过Selenium打开一个网页。
driver.get(“https://www.google.com”)
定位网页元素
在定位网页元素之后,才能在网页上执行操作和交互。假设一个元素被定义为 –
<input type="text" name="password" id="pass-id" />
Selenium提供了多种定位策略,如下所述-
1. 通过ID查找元素
语法-
driver.find_element(By.ID,"网页元素的ID")
示例-
driver.find_element(By.ID,"pass-id")
2. 通过名称查找元素
语法-
driver.find_element(By.NAME,"网页元素的名称")
示例-
driver.find_element(By.NAME,"password")
3. 通过XPath查找元素
语法-
driver.find_element(By.XPATH,"网页元素的XPath")
示例-
driver.find_element(By.XPATH,"//input[@id='pass-id']")
4. 通过CSS选择器查找元素
语法-
driver.find_element(By.CSS_SELECTOR,"网页元素的CSS选择器")
示例-
driver.find_element(By.CSS_SELECTOR,"input#pass-id")
与网页元素交互
一旦定位到元素,我们可以执行点击、输入文本或获取文本等操作。
- 点击按钮
element.click()
- 输入文本
element.send_keys("要输入的文本")
- 获取文本
text = element.textprint(text)
处理动态元素
在大多数应用程序中,一些网页元素是动态出现的,Selenium需要等待才能与这些元素交互。为了处理这些元素,我们可以使用隐式等待和显式等待。
1. 隐式等待
下面的代码用于让webdriver在执行下一行代码之前等待10秒。请注意,一旦应用隐式等待,它将持续整个webdriver对象的生命周期。
driver.implicitly_wait(10)
2. 显式等待
它会等待一个定义的条件发生后再继续执行。在下面的代码中,webdriver将等待10秒以匹配元素的条件,如果没有找到元素,将抛出超时异常。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://www.google.com")
wait = WebDriverWait(driver,10)
element = wait.until(EC.presence_of_element_located(By.ID,"动态元素ID"))
处理警报、框架和窗口
处理警报
alert = driver.switch_to.alert
alert.accept() # 点击确定
alert.dismiss() # 点击取消
3. 处理框架
driver.switch_to.frame("框架名称")
4. 处理窗口
handles = driver.window_handles
driver.switch_to.window(handles[1]) # 切换到第二个窗口(索引 1),假设打开了一个新标签。
截屏
以下代码允许您截取当前页面的屏幕。
driver.save_screenshot("Screenshot.png")
使用 Pytest 与 Selenium
PyTest 是一个 Python 测试框架,可以用来编写自动化测试脚本。它有助于高效的测试执行和报告。让我们快速了解一下如何将其用于我们上面编写的相同测试。
安装 PyTest
您可以通过在 Python 项目的命令行或终端中使用以下命令来安装 PyTest:pip install pytest
编写 PyTest 测试用例
我们将使用与我们第一次使用 Python 进行 Selenium 测试相同的测试用例。我们只需在此测试中添加验证页面标题的步骤。代码如下所示-
import pytest
from selenium import webdriver
def test_google_title():
# 初始化 webdriver
driver = webdriver.Chrome()
# 导航到 google.com
driver.get("https://www.google.com")
# 获取页面标题并断言其值
assert "Google" in driver.title
# 退出 Webdriver
driver.quit()
执行测试
您需要在您的IDE终端中运行以下命令以执行测试。请注意,您可以替换为您的测试文件名。此外,将为测试生成一个HTML报告,并将其添加到项目路径中,如下面的截图所示。
pytest PyTestTestCaseOne.py --html=report.html
使用Python进行Selenium自动化的最佳实践
使用Python的Selenium是自动化测试的有效组合,但考虑某些最佳实践总是更好,以使您的测试更加有效。其中一些包括-
- 始终优先使用显式等待来同步测试执行与网页加载,而不是使用time.sleep()或隐式等待。
- 通过避免为每个测试启动新的WebDriver实例来优化WebDriver管理。相反,使用PyTest夹具以提高测试执行效率。
- 以无头模式运行测试以加快执行速度。
- 使用页面对象模型(POM)来组织测试脚本,将页面元素与测试逻辑分离。
- 利用Selenium Grid进行并行测试执行,以便在多个浏览器和环境中运行测试,帮助扩展测试覆盖率。
- 在测试失败时捕获屏幕截图。
- 使用日志记录测试执行,以便于调试。
结论
使用Python的Selenium是测试自动化的强大组合。我们已经介绍了Selenium的基础知识,以及如何设置Selenium和Python以开始测试自动化。我们看到了基本命令,这些命令可以帮助使用Python与Selenium进行导航、定位元素、执行操作、处理动态元素、框架、窗口和警报。通过使用PyTest框架,您可以提高测试的效率,并构建一个稳健的测试自动化框架。
您现在已经完全准备好开始使用Python的Selenium,并高效地自动化您的重复网页任务!
来源: 本文最初发表于 TestGrid。