Selenium Python教程-Selenium Python教程
在本教程中,我们将学习如何使用 Python 编程语言运行 Selenium 测试脚本。
在进一步深入本教程之前,首先我们将了解一些基本要点,这将帮助我们使用 Python 实现测试脚本。
- 什么是 Selenium?
- 为什么我们使用 Selenium 进行自动化测试?
- 什么是 Python?
- 为什么 Python 对自动化测试有用?
- Selenium 与 Python
- 使用 Python 配置 Selenium
- 在 Eclipse 中配置 PyDev
什么是 Selenium?
Selenium 是一个开源测试工具,这意味着它可以从互联网上免费下载。Selenium 是一个功能测试工具,同时也兼容非功能测试工具。
为什么我们使用 Selenium 进行自动化测试?
Selenium 是最受欢迎的自动化测试工具之一。这里的自动化测试是一个过程,将任何手动测试用例转换为使用自动化工具(如 Selenium)的测试脚本。
以下是一些我们偏好使用 Selenium 进行自动化测试的方面:
- Selenium 测试脚本可以用任何编程语言编写,如 Java, Python, C#, Ruby, Perl 等。
- Selenium 测试脚本可以在多种操作系统平台上执行,如 Windows, Mac, Linux 等。
- 测试脚本可以在不同的浏览器上实施,如 Google Chrome, Mozilla Firefox, Internet Explorer, Safari 等。
- Selenium 测试工具可以与其他测试工具如 TestNG, Junit 结合使用,以管理测试用例并生成测试报告。
- 为了实现持续测试,Selenium 与 Maven, Jenkins, 和 Docker 测试工具集成。
什么是 Python?
- Python 支持面向对象编程方法来建立应用程序。它简单易学,并提供了大量的高级数据结构。它是一个开源语言。
- 它是一个高级和解释型脚本编程语言。
- Python 使得开发和调试变得快速,因为 Python 开发中不包括编译步骤。
为什么 Python 对自动化测试有用?
- Python 对自动化测试非常有用,因为它支持多种编程模式。
- Python 有许多内置的测试框架,如 Pytest 和 Robot,它们涵盖了调试和更快的工作流。
- 它是一种解释型语言,意味着解释器一次执行一行代码,这使得调试变得容易。
- Python 是跨平台语言;这就是为什么它可以在不同平台上运行,如 Windows, Linux, UNIX, 和 Macintosh,
- Python 可以轻松与其他编程语言结合使用,如 C, C++, JAVA 等。
Selenium 与 Python
使用 Python 的帮助有两种方式运行 Selenium 测试脚本:
- 使用 Python 配置 Selenium
- 在 Eclipse 中配置 PyDev。
让我们看看我们如何使用 Python 编程语言配置 Selenium:
使用 Python 配置 Selenium
使用 Python 配置 Selenium 的步骤如下:
- 在 Windows 上下载并安装 Python
- 在 Python 中安装 Selenium 库
- 下载并安装 PyCharm
- 创建一个新项目并编写 Selenium 测试脚本
- 运行并验证测试脚本。
在 Windows 上下载并安装 Python
在这一部分,我们将看到我们如何下载并为 Windows 平台安装 Python。
下载 Python
要下载 Windows 平台的最新版本的 Python,请参考下面的链接:https://www.Python.org/downloads/
- 一旦我们点击了上面的链接,最新的发布版本列表将显示,我们点击了 Python 3.8.1 版本,如下面的截图所示:
- Python-3.8.1 版本的窗口将出现在屏幕上,然后稍微滚动页面,找到 文件 部分,并点击 Windows x86-64 web-based installer 链接以适用于 Windows 操作系统,如下面的截图所示:
安装 Python
下载了适用于 Windows-64位 的 Python 后,我们将准备安装 Python。
按照下面的过程安装 Python:
一旦我们双击下载的可执行文件,Python 3.8.1(64位) 安装窗口将出现在屏幕上,我们有两个选项可以安装 Python,它们是:
- 立即安装
- 自定义安装
- 我们将点击 自定义安装,并选中 将 Python 3.8 添加到路径 复选框,如下图所示:
- 点击自定义安装后,可选功能 将出现在屏幕上,我们可以根据我们的需求选择和取消选择功能。
- 然后,点击 下一步 按钮,以继续进行,如下图所示:
- 一旦我们点击了下一步按钮;我们有一系列的 高级选项 可用,我们可以根据我们的需要选择选项,并确保选择了 为所有用户安装。
- 我们还可以通过点击 浏览 自定义 安装位置 根据我们的便利。
- 之后,点击 安装 按钮,以安装 Python,如下面的截图所示:
- 点击安装按钮后,安装过程开始,如下图所示:
- 当安装完成时,我们得到了确认消息 安装成功,这意味着 Python 已经成功为 Windows 操作系统安装。
- 然后,点击 关闭 按钮,关闭设置窗口,如下图所示:
之后,我们将检查 Python 是否成功安装并正常工作。
因此,为此,我们将打开命令提示符,输入命令 Python 并按 回车键,它将打开 Python 解释器 shell,我们可以在其中实现 Python 程序,如下图所示:
在 Python 中安装 Selenium 库
一旦我们成功安装了 Python 在我们的操作系统中,我们将安装 Selenium 库。
为此,我们将在命令提示符中执行以下命令:
Python -m pip install -U Selenium
并且,这个命令将成功安装最新的 Selenium 包 即 Selenium -3.141.0 添加到库中,如下图所示:
之后执行上述命令,它将自动创建 Selenium 文件夹 包含所有 Selenium 库,如下图所示:
下载并安装 PyCharm
一旦我们成功安装了 Python 中的 Selenium 库,我们准备下载 Python IDE,即 PyCharm。
下载 PyCharm,请按照下面的过程:
- 请参考下面的链接,下载 PyCharm
https://www.jetbrains.com/pycharm/download/#section=windows
- 一旦我们点击了上面的链接,我们将得到下面的窗口,我们将点击 下载 按钮在 社区 部分下面的 Windows
- 之后,双击可执行文件安装 PyCharm,PyCharm 社区版设置 窗口将出现在屏幕上,我们点击 下一步 按钮以继续进行,如下图所示:
- 在下一步,我们可以通过点击 浏览 按钮 选择安装位置,然后点击 下一步 按钮继续进行。
- 在下一步,我们有一些 安装选项 可用,我们可以根据我们的需求选择它们。
- 之后,点击 下一步 按钮,如下图所示:
- 然后,点击 安装 按钮以安装 PyCharm,如下图所示:
- 如下图所示,安装过程已经开始。
- 然后,点击 完成 按钮以完成安装过程,如下图所示:
创建一个新项目并编写 Selenium 测试脚本
一旦我们成功安装了 PyCharm,我们将打开 PyCharm IDE 创建一个新项目。
在 PyCharm 中创建一个新项目
按照下面的过程,在 PyCharm 中创建一个新项目:
- 首先,双击打开 PyCharm,并点击 创建新项目 如下图所示:
- 之后,我们将提供项目名称为 SeleniumTest,并点击 创建 按钮,如下图所示:
- 点击创建按钮后,我们将得到下面的窗口:
添加 Selenium 测试脚本
为了在 PyCharm 中添加 Selenium 测试脚本,请按照下面的过程:
- 右击 SeleniumTest 项目,然后转到 新建,我们可以根据我们的需求添加给定列表中的任何选项。
- 但是,这里我们正在添加 Python 文件,所以为此,我们将添加 目录 以帮助我们分别管理它们,如下图所示:
- 并提供目录名称,在我们的案例中我们给它命名为 Demo
- 之后,按 回车键 如下图所示:
- 创建目录后,我们将右击 Demo 目录然后转到 新建,并从弹出菜单中选择 Python 文件 如下图所示: Demo → 新建 → Python 文件
- 我们为 python 文件提供一个名称,如 Sample1。
- 然后,按 回车键 如下图所示:
- 之后,我们得到了 IDE,在那里我们可以创建或编写我们的 Selenium 测试脚本。
编写 Selenium 测试脚本
为了测试目的,我们首先将转到 Google 首页 并从那里搜索 javatpoint。
我们一步步创建我们的示例测试脚本,以给你一个完整的理解,关于我们如何用 Python 编程语言编写 Selenium 测试脚本。
为此,请按照下面的步骤:
步骤 | 动作 | 输入 | 预期结果 |
---|---|---|---|
1. | 从 selenium 导入 WebDriver。 | 应该导入 WebDriver。 | |
2. | 打开 Google Chrome 浏览器。 | 应该打开 Google Chrome 浏览器。 | |
3. | 最大化 浏览器窗口。 | 浏览器窗口应该被最大化。 | |
4. | 导航到 Google 首页。 | https://www.google.com/ | 必须显示 Google 首页。 |
5. | 识别 Google 搜索文本框 并传递值。 | javatpoint | 值应该被输入到搜索文本框中。 |
6. | 点击 Google 搜索按钮。 | 应该点击 Google 搜索按钮。 | |
7. | 关闭浏览器。 | 浏览器应该被关闭。 |
第1步
在第一步中,我们将输入以下语句来导入 web 驱动程序:
from selenium import webdriver
第2步
之后,我们将打开 Google Chrome 浏览器。
如下图所示,我们有多种浏览器选项可用,我们可以从列表中选择任何浏览器,如 Chrome, Edge, Firefox, Internet Explorer, Opera, Safari 等。
打开 Google Chrome 浏览器的示例代码如下:
driver = webdriver.Chrome()
第3步
在下一步中,我们将最大化我们的浏览器窗口大小,示例代码如下:
driver.maximize_window()
第4步
然后,我们将导航到给定的 URL。
示例代码如下:
driver.get("https://www.google.com/")
注意:正如我们所知,Python 是一种非常易于编写代码的语言,因为我们不必像在 java 中那样编写多个语句。或者如果我们想要注释掉某些内容,我们只需简单地在我们的语句中放置一个井号[#],或者我们可以直接从键盘上按 Ctrl+正斜杠[/]。
第5步
在这一步中,我们试图用它的 Name 属性值来定位 Google 搜索文本框。
- 在 Google 搜索 文本框上右击,并在弹出菜单中选择 检查 选项,如下图所示:
- 开发者工具窗口将启动,带有所有在 Google 搜索 文本框开发中使用的特定代码。
- 并复制其 Name 属性的值,即 "q",如下图所示:
这里的示例代码:
driver.find_element_by_name("q").send_keys("javatpoint")
第6步
一旦我们识别了 Google 搜索文本框,我们将识别 Google 搜索按钮。
所以,为此,请按照下面的过程:
- 在 Google 搜索按钮上右击,并在给定的弹出菜单中选择 检查 选项,如下图所示:
- 开发者工具窗口将启动,带有所有在 Google 搜索 按钮开发中使用的特定代码。
- 然后,复制其 name 属性的值,即 "btnK",如下图所示:
并且,示例代码如下:
driver.find_element_by_name("btnK").send_keys(Keys.ENTER)
第7步
在最后一步中,我们将关闭浏览器。
关闭浏览器的示例代码如下:
driver.close()
完成所有上述步骤后,我们的最终测试脚本将如下所示:
from Selenium import webdriver
import time
from Selenium.webdriver.common.keys import Keys
print("sample test case started")
driver = webdriver.Chrome()
#driver=webdriver.firefox()
#driver=webdriver.ie()
#maximize the window size
driver.maximize_window()
#navigate to the url
driver.get("https://www.google.com/")
#identify the Google search text box and enter the value
driver.find_element_by_name("q").send_keys("javatpoint")
time.sleep(3)
#click on the Google search button
driver.find_element_by_name("btnK").send_keys(Keys.ENTER)
time.sleep(3)
#close the browser
driver.close()
print("sample test case successfully completed")
注意:导入时间:时间是一个 Python 模块,用于处理与时间相关的任务,如 time.sleep()。
from Selenium.webdriver.common.keys import Keys:
这里,我们从 Selenium 添加 Keys 库,就像在上面的代码中,我们使用 Enter 键而不是 click() 方法来执行特定的场景。
运行和验证测试脚本
一旦我们完成了编写 Selenium 测试脚本,我们将运行我们的测试脚本。
这里我们将以两种方式运行我们的测试脚本:
- 在 Python IDE 中运行
- 在命令提示符中运行
在 Python IDE 中运行
所以,为此,首先,我们将看到如何在 Python IDE 中运行 Selenium 测试脚本。
- 右击代码,然后从弹出菜单中选择 运行 'Sample1',如下图所示:
- 当我们运行这个脚本时,它会给出一个异常,因为我们没有 Chrome 驱动可执行文件,如下图所示:
为了克服这个异常,我们将从下面的链接下载 chrome 驱动可执行文件:https://chromedriver.storage.googleapis.com/index.html?path=79.0.3945.36/
- 一旦我们点击了上面的链接,我们将点击 zip 文件 基于我们的操作系统平台。就像我们有 Windows 平台,那么我们点击了 zip 来下载可执行文件,如下图所示:
- 下载了 exe 文件后,我们可以将此文件粘贴到 Python 文件夹并解压缩它。
- 然后,我们将在 Python IDE 中创建一个名为 Browsers 的新文件夹。
- 在项目上右击(SeleniumTest) → 新建 → 目录,如下图所示:
- 并且,我们将手动添加所有驱动程序的可执行文件到 Browsers 文件夹中。
- 为此,我们将从 Python 文件夹 复制 chrome 驱动 exe 文件,并粘贴到 浏览器 文件夹中,如下图所示:
- 现在转到 PyCharm IDE,并复制 chromedriver.exe 文件的 绝对路径,如下图所示:
- 将 "driver = webdriver.Chrome()" 语句替换为下面给出的语句:
driver=webdriver.Chrome(r"C:\Users\JTP\PycharmProjects\SeleniumTest\Browsers\chromedriver.exe")
注意:这里,我们将使用 "r" 来克服 Unicode 错误。
如下图所示,如果我们不在代码中放置 r,它将生成 语法错误。
- 之后,我们再次运行 sample1,它将成功执行代码,如下图所示:
上述测试脚本将启动 Google Chrome 浏览器并自动执行所有测试场景。
在命令提示符中运行
要在命令提示符中运行上述测试脚本,请按照下面的过程:
- 复制 Sample1.py 文件的位置,如下图所示:
- 并粘贴到命令提示符中,首先进入特定的文件夹,然后输入以下命令: Python Sample1.py
- 然后,按 回车键 如下图所示,sample 测试用例已开始。
- 在自动化所有场景后,它将显示消息为 sample 测试用例成功完成。
在 Eclipse 中配置 PyDev
这是另一种使用 Python 执行 Selenium 测试脚本的方式。
在本节中,我们将在 Eclipse 中安装 PyDev,然后在其上实施 Selenium 测试脚本。
- 安装 PyDev
- 使用 Python 执行 Selenium 测试脚本。
安装 PyDev
要在 Eclipse 中安装 PyDev,请按照下面的过程:
- PyDev 安装
- 设置首选项
- 创建一个新项目
- 创建一个新包
- 创建一个 PyDev 模块
PyDev 安装
在开始安装 PyDev 到 Eclipse 之前,请确保我们已经安装了 Eclipse IDE 的最新版本。
- 双击 Eclipse IDE 软件。
- 然后,转到工具栏中的 帮助 并选择弹出菜单中的 Eclipse Marketplace 选项,如下图所示:
- Eclipse Marketplace 窗口将打开,在 搜索区域,我们将输入 PyDev 并按 回车键
- 然后,点击 安装 按钮,如下图所示:
- 一旦我们点击了安装按钮;它将开始安装过程,然后点击 确认 按钮以进行进一步的过程,如下面的过程所示:
- 然后,选择 我接受许可协议的条款 选项,然后点击 完成 按钮以完成安装过程,如下图所示:
- 安装完成后,重新启动你的 Eclipse IDE,如下图所示:
- 之后,我们将设置首选项以根据我们的需求使用 Python 项目。
设置首选项
要设置首选项,请按照下面的过程:
- 转到 Eclipse Ide 工具栏中的 窗口 选项,然后选择给定列表中的 首选项 选项,如下图所示:
- 首选项窗口将打开,我们将展开 PyDev 然后再次展开 解释器 并从给定列表中选择 Python 解释器。点击 浏览 Python/pypy.exe 选项,如下图所观察到的: PyDev → 解释器 → Python 解释器
- 一旦我们点击 浏览 Python/pypy.exe,我们将提供 解释器名称 和 Python 的 可执行文件路径。
- 为此,在 选择解释器 弹出窗口中,点击 浏览 按钮,并在我们的本地系统中浏览 Python 的可执行文件路径,然后点击 确定 按钮,如下图所示:
- 之后,点击 全选 按钮,然后点击 确定 按钮以选择文件夹,如下图所示:
- 然后,点击 应用并关闭 按钮,完成设置首选项过程,如下图所示:
- 成功设置首选项后,我们将在 Python 中创建一个新项目。
创建一个新项目
创建一个新项目,请按照下面的步骤:
- 转到 文件 菜单,然后转到 新建 并选择弹出菜单中的 其他 选项,如下图所示: 文件 → 新建 → 其他
- 一旦选择了 其他 选项,[新建] 窗口将打开,我们将展开 PyDev 并选择 PyDev 项目,然后点击 下一步 按钮,如下图所示:
- 一旦我们点击了下一步按钮;我们将提供 项目名称 并点击 完成 按钮,如下图所观察到的:
- Eclipse 中创建了 Python 项目,如下图所示:
- 创建 Python 项目后,我们将创建一个新的 Python 包。
创建一个新包
按照下面的过程,创建一个新包:
- 在新创建的项目上右击(SeleniumTest),转到 新建,然后在给定的弹出菜单中选择 PyDev 包,如下图所示:
- 然后提供 PyDev 包 的名称,并点击 完成 按钮,如下图所示:
- 如下图所示,新包已创建。
创建了 PyDev 包后,我们将创建一个 PyDev 模块。
创建一个 PyDev 模块
创建一个 PyDev 模块,请按照下面的过程:
- 在新创建的包上右击[Demo],然后转到 新建 并从给定列表中选择 PyDev 模块,如下图所示: Demo → 新建 → PyDev 模块
- 然后给 PyDev 模块命名 [Test],并点击 完成 按钮,如下图所观察到的:
- 之后,我们将从给定列表中选择 空模板,并点击 确定 按钮,如下图所示:
- 完成创建 Python 模型后,我们准备编写和执行我们的 Selenium 测试脚本。
编写和执行 Selenium 测试脚本
编写 Selenium 测试脚本
为了测试目的,我们将执行 Gmail 应用程序上的 登录测试。
在这个测试中,我们将自动化以下测试场景:
步骤 | 动作 | 输入 | 预期结果 |
---|---|---|---|
1. | 从 Selenium 导入 web 驱动程序。 | 应该导入 web 驱动程序。 | |
2. | 打开 Google Chrome 浏览器。 | 应该打开 Google Chrome 浏览器。 | |
3. | 最大化浏览器并删除所有 cookies | 浏览器应该被最大化,cookies 应该被删除。 | |
4. | 导航到 Gmail 应用程序 的首页。 | https://www.gmail.com | 必须显示 Gmail 首页。 |
5. | 识别 用户名 文本框并传递值。 | xyz11@gmail.com | 应该识别用户名文本框并在用户名文本框中输入值。 |
6. | 点击 下一步 按钮。 | 应该点击下一步按钮。 | |
7. | 识别 密码 文本框并传递值。 | ####### | 应该识别密码文本框并在密码文本框中输入值。 |
8. | 点击 下一步 按钮。 | 应该点击下一步按钮。 | |
9. | 关闭浏览器。 | 浏览器应该被关闭。 |
按照下面的步骤:
第1步
在第一步中,我们将导入 web 驱动程序,使用以下语句:
from selenium import webdriver
第2步
之后,我们将打开 Google Chrome 浏览器。
- 要启动 Google Chrome 或任何其他浏览器(Firefox, ie 等),我们需要从给定链接下载 Chrome 驱动程序的可执行文件:
https://sites.google.com/a/chromium.org/chromedriver/downloads
- 然后,将下载的 exe 文件粘贴到 Python 包(demo)中以克服异常,如下图所示:
示例代码如下:
#open Google Chrome browser
driver = webdriver.Chrome()
第3步
在下一步中,我们将最大化并删除浏览器窗口的所有 cookies。
这里的示例代码:
#maximize the window size
driver.maximize_window()
#delete the cookies
driver.delete_all_cookies()
第4步
在这一步中,我们将导航到 Gmail 应用程序的 URL。
示例代码如下:
#navigate to the url
driver.get("https://www.gmail.com")
第5步
一旦我们导航到 Gmail 应用程序的 URL,我们将识别用户名文本框并传递它的值。
要识别用户名文本框,请按照下面的过程:
- 在用户名文本框上右击。
- 并在给定的弹出菜单中选择 检查 选项,如下图所示:
- 开发者工具窗口将打开,带有所有在 用户名文本框开发中使用的特定代码。
- 然后,复制其 id 属性 的值,即:identifierId,如下图所示:
- 这里的示例代码:
#identify the user name text box and enter the value
driver.find_element_by_id("identifierId").send_keys("xyz11@gmail.com")
time.sleep(2)
第6步
在这一步中,我们将识别 下一步 按钮并点击它。
要识别 下一步 按钮,请按照下面的过程:
- 在下一步按钮上右击,并在给定的弹出菜单中点击 检查 选项,如下图所示:
- 开发者工具窗口将打开,带有所有在 下一步开发中使用的特定代码。
- 并且,复制其 绝对 XPath 的值,即://span[@class='RveJvd snByac'] 从 chropath 部分,如下图所示:
- 这里的示例代码:
#click on the next button
driver.find_element_by_xpath("//span[@class='RveJvd snByac'][68]").click()
time.sleep(3)
第7步
在这一步中,我们将识别密码文本框并传递它的值。
要识别密码文本框,请按照下面的过程:
- 在 密码文本框 上右击,并在给定的弹出菜单中点击 检查 选项,如下图所示:
- 开发者工具窗口将打开,带有所有在 密码 文本框开发中使用的特定代码。
- 并且,复制 name 属性的值,即 password,如下图所示:
这里的示例代码:
#identify the password text box and enter the value
driver.find_element_by_name("password").send_keys("########")
time.sleep(3)
第8步
在这一步中,我们将识别 下一步 按钮并点击它。
要识别下一步按钮,请按照下面的过程:
- 在下一步按钮上右击,并在给定的弹出菜单中点击 检查 选项,如下图所示:
- 开发者工具窗口将打开,带有所有在 下一步 开发中使用的特定代码。
- 复制其 绝对 XPath 的值,即://span[contains(text(),'Next')] 从 chropath 部分,如下图所示:
这里的示例代码:
#click on the next button
driver.find_element_by_xpath("//span[contains(text(),'Next')][73]").click()
time.sleep(3)
第9步
在测试脚本的最后一步,我们将关闭浏览器。
这里的示例代码:
#close the browser
driver.close()
在成功编写所有上述步骤后,我们的最终测试脚本将如下所示。
from Selenium import webdriver
import time
from Selenium.webdriver.common.keys import Keys
print("test case started")
#open Google Chrome browser
driver = webdriver.Chrome()
#maximize the window size
driver.maximize_window()
#delete the cookies
driver.delete_all_cookies()
#navigate to the url
driver.get("https://www.gmail.com")
#identify the user name text box and enter the value
driver.find_element_by_id("identifierId").send_keys("xyz11@gmail.com")
time.sleep(2)
#click on the next button
driver.find_element_by_xpath("//span[@class='RveJvd snByac'][74]").click()
time.sleep(3)
#identify the password text box and enter the value
driver.find_element_by_name("password").send_keys("#########")
time.sleep(3)
#click on the next button
driver.find_element_by_xpath("//span[contains(text(),'Next')][75]").click()
time.sleep(3)
#close the browser
driver.close()
print("Gmail login has been successfully completed")
注意:在上面的代码中,使用你的 Gmail id 代替:xyz11@gmail.com
和密码:
运行测试脚本
要运行上述测试脚本,我们将右击代码,然后选择 运行方式 → Python 运行,如下图所示:
上述测试脚本将启动 Google Chrome 浏览器并自动执行所有测试场景。
正如我们在下面的截图中看到的,我们的代码成功运行,因为我们在控制台屏幕上得到了打印消息(输出)。