- Robot Framework 教程
- Robot Framework - 首页
- Robot Framework - 概述
- 环境搭建
- Unix 和 Linux 安装
- RIDE 简介
- 使用 RIDE 创建第一个测试用例
- 编写和执行测试用例
- 关键字和数据驱动测试用例
- 使用 Selenium 库操作浏览器
- 操作文本框
- 操作单选按钮
- 操作复选框
- 操作下拉菜单
- 使用关键字
- 使用变量
- 使用命令行
- 使用测试设置和测试清理
- 使用内置库
- 使用外部数据库库
- 使用 Robot Framework 测试登录页面
- Robot Framework 有用资源
- Robot Framework 快速指南
- Robot Framework - 有用资源
- Robot Framework - 讨论
Robot Framework 快速指南
Robot Framework - 概述
Robot Framework 是一个开源的测试自动化框架,用于验收测试和验收测试驱动开发。它遵循不同的测试用例风格——关键字驱动、行为驱动和数据驱动来编写测试用例。Robot Framework 支持外部库,这些库是开源的,可用于自动化。最常用的库是 Selenium 库,用于 Web 开发和 UI 测试。
测试用例使用关键字样式以表格格式编写。您可以使用任何文本编辑器或 Robot 集成开发环境 (RIDE) 来编写测试用例。
Robot Framework 可以在所有可用的操作系统上良好运行。该框架基于 Python 构建,并在 Jython (JVM) 和 IronPython (.NET) 上运行。
Robot Framework 特性
在本节中,我们将了解 Robot 提供的不同特性。
测试用例的表格格式
Robot Framework 使用简单的表格格式,其中测试用例使用关键字编写。对于新手开发者来说,很容易理解和编写测试用例。
关键字
Robot Framework 自带内置关键字,还提供来自 Selenium 库(打开浏览器、关闭浏览器、最大化浏览器等)的关键字。我们还可以创建用户自定义关键字,它是其他用户自定义关键字或内置或库关键字的组合。我们还可以向这些关键字传递参数,这使得用户自定义关键字类似于可以重复使用的函数。
变量
Robot Framework 支持标量、列表和字典变量。Robot Framework 中的变量易于使用,在编写复杂的测试用例时非常有用。
库
Robot Framework 支持许多外部库,例如 SeleniumLibrary、Database Library、FTP Library 和 http 库。SeleniumLibrary 最常用,因为它有助于与浏览器交互,并有助于 Web 应用程序和 UI 测试。Robot Framework 还拥有自己的内置库,用于处理字符串、日期、数字等。
资源
Robot Framework 还允许导入包含关键字的 robot 文件,以便在测试用例中使用。资源非常易于使用,当我们需要使用为其他测试项目编写的关键字时非常有用。
数据驱动测试用例
Robot Framework 支持关键字驱动式测试用例和数据驱动式测试用例。数据驱动式测试用例使用作为模板的高级关键字,测试用例用于与模板中定义的高级关键字共享数据。这使得使用不同的输入测试 UI 变得非常容易。
测试用例标记
Robot Framework 允许标记测试用例,以便我们可以运行标记的测试用例或跳过标记的测试用例。当我们只想运行一组测试用例或跳过它们时,标记非常有用。
报告和日志
Robot Framework 以报告和日志的形式提供测试套件和测试用例执行的所有详细信息。测试用例的所有执行细节都可在日志文件中找到。提供了诸如测试用例是否通过或失败、执行时间、运行测试用例所遵循的步骤等详细信息。
RIDE
Robot Framework 提供的这个编辑器有助于编写和运行测试用例。该编辑器非常易于安装和使用。RIDE 通过提供框架特定的代码补全、语法高亮等功能,简化了测试用例的编写工作。项目、测试套件、测试用例、关键字、变量的创建,库的导入,执行,测试用例的标记都可以在该编辑器中轻松完成。Robot Framework 还为 Eclipse、Sublime、Textmate、PyCharm 等提供了支持 Robot 测试用例的插件。
Robot Framework 优点
Robot Framework 是开源的,任何想要尝试的人都可以轻松做到。
它非常易于安装,有助于创建和执行测试用例。任何新手都可以轻松理解,不需要任何高级测试知识就可以开始使用 Robot Framework。
它支持关键字驱动、行为驱动和数据驱动式的测试用例编写。
它对外部库有良好的支持。最常用的库是 Selenium Library,它易于在 Robot Framework 中安装和使用。
Robot Framework 缺点
Robot 缺乏对 if-else 语句和嵌套循环的支持,而这些在代码变得复杂时是必需的。
结论
Robot Framework 是一个用于验收测试和验收测试驱动开发的开源测试自动化框架。Robot Framework 中的测试用例基于以表格格式编写的关键字,这使得它清晰易读,并传达了有关测试用例意图的正确信息。例如,要打开浏览器,使用的关键字是 “Open Browser”。
Robot Framework - 环境搭建
Robot Framework 是使用 Python 构建的。在本章中,我们将学习如何设置 Robot Framework。要使用 Robot Framework,我们需要安装以下内容:
- Python
- pip
- Robot Framework
- 用于 RIDE IDE 的 wxPython
- Robot Framework RIDE
安装 Python
要安装 Python,请访问 Python 官方网站:https://www.pythonlang.cn/downloads/ 并下载最新版本或您将使用的操作系统的先前版本的 Python(Windows、Linux/Unix、Mac 和 OS X)。
以下是 Python 下载网站的截图:
根据发布日期,最新版本如下:
在下载 Python 之前,建议您通过在命令行中运行以下命令来检查系统中是否已存在 Python:
Windows 安装
python --version
如果我们得到 Python 版本作为输出,那么我们的系统中已经安装了 Python。否则,您将看到上面显示的内容。
这里,我们将下载 Python 2.7 版本,因为它与我们现在正在使用的 Windows 8 兼容。下载完成后,通过双击 .exe Python 下载文件来安装 Python 到您的系统中。按照安装步骤在您的系统上安装 Python。安装完成后,为了使 Python 在全局可用,我们需要将路径添加到 Windows 的环境变量中,如下所示:
设置 Windows 的路径
右键单击“我的电脑”图标并选择“属性”。单击“高级系统设置”,将显示以下屏幕。
单击上面突出显示的环境变量按钮,将显示如下屏幕:
选择变量 Path 并单击编辑按钮。
获取 Python 的安装路径,并在最后将相同的路径添加到变量值中,如上所示。
完成此操作后,您可以检查 Python 是否已从任何路径或目录安装,如下所示:
Robot Framework - Unix 和 Linux 安装
现在让我们看看在 Unix/Linux 机器上安装 Python 的几个简单步骤。打开 Web 浏览器并访问 https://www.pythonlang.cn/downloads/。
- 按照链接下载适用于 Unix/Linux 的压缩源代码。
- 下载并解压文件。
- 如果您想自定义某些选项,请编辑 Modules/Setup 文件。
- 运行 ./configure 脚本
- make
- make install
这会将 Python 安装到标准位置/usr/local/bin,并将它的库安装到/usr/local/lib/pythonXX,其中 XX 是 Python 的版本。
在 Unix/Linux 上设置路径
要在 Unix 中为特定会话添加 Python 目录到路径:
在 csh shell 中
键入 setenv PATH "$PATH:/usr/local/bin/python" 并按 Enter。
在 bash shell (Linux) 中
键入 export PATH="$PATH:/usr/local/bin/python" 并按 Enter。
在 sh 或 ksh shell 中
键入 PATH="$PATH:/usr/local/bin/python" 并按 Enter。
注意 - /usr/local/bin/python 是 Python 目录的路径
安装 PIP
现在,我们将检查下一步,即 Python 的 pip 安装。PIP 是一个用于安装 Python 模块的包管理器。
PIP 会与 Python 一起安装,您可以在命令行中检查如下:
命令
pip --version
这里我们仍然没有得到 pip 的版本。我们需要将 pip 路径添加到环境变量中,以便我们可以全局使用它。PIP 将安装在 Python 的 Scripts 文件夹中,如下所示:
返回环境变量并向变量列表添加 pip 的路径。将 C:\Python27\SCripts 添加到环境变量中,如下所示:
现在打开您的命令行并检查安装的 pip 版本:
所以现在,我们已经安装了 Python 和 pip。
安装 Robot Framework
我们现在将使用 pip(Python 包管理器)来安装 Robot Framework,其命令如下:
命令
pip install robotframework
安装完成后,您可以检查已安装的 Robot Framework 版本,如下所示:
命令
robot --version
因此,我们可以看到已安装 Robot Framework 3.0.4。
安装 wxPython
我们需要 wxPython 用于 Robot Framework RIDE,这是一个 Robot Framework 的 IDE。
对于 Windows,要获取所需的 wxPython 下载,请访问以下网址:
https://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/并根据您的 Windows 操作系统下载 32 位或 64 位的 wxpython。
下载 32 位 wxPython 并安装。
安装完成后,它会打开命令行并自动运行一些命令,如下所示:
wxPython 现在已安装。此模块是使用 Robot Framework 的下一个步骤 RIDE IDE 所必需的。
在 Linux 上,您应该能够使用您的包管理器安装 wxPython。例如,在基于 Debian 的系统(如 Ubuntu)上运行 sudo apt-get install pythonwxgtk2.8 就足够了。
在 OS X 上
,您应该使用从 wxPython 下载页面找到的 wxPython 二进制文件。wxPython2.8 只有 32 位版本可用,因此 Python 也必须在 32 位模式下运行。这可以通过全局运行来完成> defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
或者,仅用于 RIDE 执行:
> VERSIONER_PYTHON_PREFER_32_BIT=yes ride.py
安装 RIDE
RIDE 是 Robot Framework IDE。我们可以使用 pip 来安装它,如下所示。
命令
pip install robotframework-ride
安装完成后,打开命令提示符并输入以下命令打开Ride-IDE。
命令
ride.py
上述命令将打开IDE,如下所示:
因此,我们完成了Robot Framework的安装,可以开始使用它了。
结论
现在我们知道了如何安装python、pip、robot framework,以及安装RIDE来处理robot framework中的测试用例。
Robot Framework - RIDE简介
RIDE是Robot Framework的测试编辑器。接下来,我们将在RIDE中编写测试用例。要启动RIDE,我们需要运行以下命令。
命令
ride.py
上述命令将打开IDE,如下截图所示:
在本章中,我们将浏览编辑器,了解IDE中可用的选项和功能。这些选项和功能将帮助我们测试项目。
创建新项目
转到“文件”,然后单击“新建项目”,如下所示:
单击“新建项目”后,将出现以下屏幕。
输入项目名称。“创建路径”是项目将保存到的路径。如有需要,可以更改位置。项目可以保存为文件或目录。您也可以使用ROBOT、TXT、TSV或HTML等格式保存项目。在本教程中,我们将使用ROBOT格式,以及如何编写和执行测试用例。
现在,我们将按照以下所示方式添加一个文件类型的项目。项目命名为“Testing”,创建项目后将出现以下屏幕。
项目名称显示在左侧,右侧可以看到三个选项卡:“编辑”、“文本编辑”和“运行”。
“编辑”选项卡在UI上有很多选项,如上所示。在本节中,我们可以添加运行测试用例所需的数据。我们可以导入库、资源、变量,添加标量、添加列表、添加字典和添加元数据。
在“编辑”部分添加的详细信息将在下一个选项卡“文本编辑”中显示。您可以在“文本编辑”部分编写代码。
如果在“文本编辑”中添加了任何更改,它将显示在“编辑”部分。因此,“编辑”和“文本编辑”这两个选项卡是相互依赖的,所做的更改将在两者中都显示。
测试用例准备就绪后,我们可以使用第三个选项卡“运行”来执行它们。
“运行”UI如上所示。它允许运行测试用例,并提供启动、停止、暂停、继续、下一个测试用例、单步执行等选项。您还可以为正在执行的测试用例创建报告和日志。
要创建测试用例,我们需要执行以下操作:
右键单击创建的项目,然后单击“新建测试用例”,如下所示:
单击“新建测试用例”后,将出现如下所示的屏幕:
输入测试用例的名称,然后单击确定。我们将测试用例保存为TC0。保存测试用例后,将出现以下屏幕。
测试用例具有文档、设置、拆卸、标签、超时和模板等选项。它们都有一个编辑按钮;单击该按钮后,将出现一个屏幕,您可以在其中输入每个选项的详细信息。我们将在后续章节中讨论这些详细信息的各种参数。
测试用例可以以表格格式编写,如下所示。Robot Framework测试用例是基于关键字的,我们可以使用内置关键字或从库中导入的关键字来编写测试用例。我们还可以在Robot Framework中创建用户自定义关键字、变量等。
导航栏中提供了运行/停止测试用例的快捷键,如下所示:
搜索关键字选项可按如下屏幕截图所示使用:
要获取Robot Framework提供的关键字列表,只需在表格格式中按Ctrl+空格键,如下所示,它将显示所有可用的关键字:
如果您记不住关键字,这将帮助您获取详细信息。我们提供了每个关键字的详细信息。详细信息还显示了如何使用相关的关键字。在下一章中,我们将学习如何在RIDE中创建我们的第一个测试用例。
结论
在本章中,我们了解了RIDE提供的功能。我们还学习了如何创建和执行测试用例。
Robot Framework - 使用RIDE创建第一个测试用例
我们将探索RIDE并处理我们的第一个测试用例。
从命令提示符打开RIDE,或者您可以在桌面上创建RIDE的快捷方式。
从命令行
ride.py
从桌面
转到安装RIDE的路径;对于Windows,它是C:\Python27\Scripts。
右键单击ride.py,然后单击发送到 -> 桌面(创建快捷方式)。
您现在将在桌面上看到RIDE的图标。您可以单击它以打开RIDE编辑器。
让我们从RIDE中的第一个测试用例开始。打开编辑器,然后单击“文件” -> “新建项目”。
单击新建项目并输入项目名称。
父目录是项目将保存到的路径。如有需要,可以更改路径。我创建了一个名为robotframework的文件夹,并将所有文件保存在该文件夹中。
项目FirstTestCase已创建。
要创建测试用例,请右键单击该项目。
单击新建测试用例。
输入测试用例的名称,然后单击确定。
为创建的测试用例显示了三个选项卡:编辑、文本编辑和运行。
“编辑”选项卡有两种格式:设置和表格。我们将在后续章节中讨论这两种格式。
设置格式
在“设置”中,我们有文档、设置、拆卸、标签、超时和模板。
文档
您可以添加有关测试用例的详细信息,以便将来参考。
单击确定保存文档。
设置和拆卸
如果为测试用例分配了设置,则将在测试用例执行之前执行它,而将在测试用例完成后执行拆卸。我们将在后续章节中详细介绍这一点。现在我们的第一个测试用例不需要它,可以保持为空。
标签
这用于标记测试用例——包含或排除特定测试用例。您还可以指定任何测试用例是否关键。
超时
这用于为测试用例设置超时。我们现在将其保留为空。
模板
这将包含要用于测试用例的关键字。它主要用于数据驱动的测试用例。高级用户定义关键字在模板中指定,测试用例用于将数据传递给关键字。
在表格格式中,我们将编写我们的第一个测试用例并执行它以查看输出。
在这个测试用例中,我们只需要添加一些日志并查看它的输出。请参考以下屏幕截图以了解这一点:
我们使用了关键字Log来记录消息,如上所示。
根据在“编辑”中指定的关键字,我们可以在“文本编辑”中获取如下所示的代码:
您也可以在“文本编辑”中编写测试用例,这将反映在表格格式中。现在让我们运行测试用例并查看输出。
要运行测试用例,我们需要单击“启动”,如下所示:
单击“启动”,以下是测试用例的输出:
我们的测试用例已成功执行,详细信息如上所示。它将状态显示为PASS。
我们还可以在报告和日志中查看测试用例执行的详细信息,如下所示。
单击“报告”,它将在新选项卡中打开详细信息,如下所示
在“报告”中,它提供了诸如开始时间、结束时间、日志文件路径、测试用例状态等详细信息。
单击报告右上角或“运行”屏幕上的“日志”。
以下是日志文件的详细信息:
日志文件提供了测试执行的详细信息以及我们为测试用例提供的关键字的详细信息。
在报告和日志文件中,状态为绿色。
现在让我们进行一些更改,这将导致测试用例失败,并查看输出。
在上述测试用例中,Log关键字是错误的。我们将运行测试用例并查看输出:
我们看到测试用例失败了。我已经突出显示了它关于测试用例的错误。
现在我们将查看报告和日志输出。从报告:
从日志
测试用例失败时,颜色将更改为红色,如上所示。
结论
在本章中,我们介绍了一个简单的测试用例,并显示了执行期间看到的結果。报告和日志显示了测试用例执行的详细信息。
编写和执行测试用例
在本章中,我们将学习如何编写和执行测试用例。本章将涵盖以下方面:
- 项目设置
- 导入库
- 以表格格式编写测试用例
- 使用标签执行测试用例
- 使用资源文件进行测试用例
项目设置
运行命令ride.py以启动RIDE IDE。
命令
ride.py
单击文件 -> 新建项目,如下所示:
单击“新建项目”后,将出现如下所示的屏幕:
“新建项目”显示类型为文件或目录。默认情况下,选择“文件”。我们将单击“目录”以创建测试套件,该目录可以在该目录中包含许多测试套件。每个套件都将包含测试用例。
我们现在将使用ROBOT格式。
父目录是将创建WritingTestCases目录的路径。单击“确定”保存测试套件目录。
右键单击创建的目录,然后单击新建套件。您还可以使用测试套件创建子目录。
现在,我们将从创建测试套件开始,如下所示:
单击“确定”保存测试套件。
现在您可以将测试用例添加到套件中。右键单击创建的测试套件,如下所示:
单击新建测试用例。它将显示一个屏幕,用于添加测试用例的名称,如下所示:
单击“确定”保存测试用例。我们的项目设置已准备就绪。
导入库
Robot Framework有自己的内置库,无需导入。但是我们需要与浏览器、数据库等进行交互。为了交互,我们需要导入库。
Robot Framework支持的外部库列表在Robot Framework官方网站上列出,如下所示:
为了使用浏览器和Web应用程序,我们将导入Selenium库。安装方法在使用Selenium库处理浏览器章节中进行了讨论。
要导入库,我们需要单击主项目。在右侧,“设置”将显示“添加导入”选项,如下所示:
单击“库”,然后输入库的名称,如下所示:
单击“确定”保存库。
设置将如下所示显示在设置中:
我们需要重复相同的步骤,并为创建的测试套件添加库。单击创建的测试套件,并按如下所示导入库:
当您单击左侧的测试用例时,它将显示表格格式,您可以在其中输入关键字。现在,您可以使用内置关键字和 Selenium 库中提供的关键字。
以表格格式编写测试用例
这是一个简单的测试用例,它在 Chrome 浏览器中打开 URL。
以下是测试用例的详细信息:
*** Settings *** Library SeleniumLibrary *** Test Cases *** TC1 Open Browser https://tutorialspoint.com/ chrome Maximize Browser Window Close Browser
我们将在此项目中添加另一个测试用例:TC2。
*** Settings *** Library SeleniumLibrary *** Variables *** ${number} 100 *** Test Cases *** TC1 Open Browser https://tutorialspoint.com/ chrome Maximize Browser Window Close Browser TC2 ${a} Set Variable Hi Log ${a} ${b} Set Variable If ${number}>0 Yes No Log ${b}
我们可以在创建的测试套件下添加多个测试用例。单击“运行”以执行测试用例。执行将根据添加的测试用例数量进行:
使用标签执行测试用例
如果您只想运行测试用例 TC2,您可以对其进行标记。单击测试用例,然后单击“标签”旁边的“编辑”,如下所示:
单击“确定”保存标签。在“运行”中添加标签名称,如下所示:
我们选择了选项 -> **仅运行具有这些标签的测试**并在其中添加了标签名称。现在,它将只运行具有标签名称的那些测试用例。您可以随意命名,并根据标签名称对测试用例进行分组并运行。您还可以使用标签跳过测试用例。
现在,我们可以看到执行时只有 TC2 运行。
使用资源文件进行测试用例
Robot Framework 提供了资源选项,您可以在其中导入要与测试用例一起使用的 Robot 文件。
我们创建的测试用例 TC1 使用以下关键字:
我们使用了以下关键字:
- 打开浏览器 (Open Browser)
- 最大化浏览器窗口 (Maximize Browser Window)
- 关闭浏览器 (Close Browser)
我们将为上述测试用例使用用户自定义关键字。用户自定义关键字将在用作资源的 Robot 文件中可用。
我们将在同一目录中创建一个文件,并按如下所示编写我们的关键字:
请注意关键字的详细信息,即如何在《Robot Framework - 使用关键字》一章中解释如何创建用户自定义关键字。
我们在 browseropen.robot 文件中创建了一个名为 **Test Browser** 的用户自定义关键字:
*** Settings *** Library SeleniumLibrary *** Variables *** ${url} https://tutorialspoint.com/ ${browser} chrome *** Keywords *** Test Browser Open Browser ${url} ${browser} Maximize Browser Window
该文件包含各种选项,例如设置、变量和关键字。请注意,我们不能在用作资源的文件中编写测试用例。我们将按如下所示将上述文件上传为测试套件的资源。
选择测试套件。在左侧,单击资源选项,如下所示:
单击“资源”,它将要求您提供导入 Robot 文件的路径:
提及文件存储的路径(如上所示),然后单击“确定”以添加资源。它将显示如下:
现在,我们将更改测试用例 TC1,其关键字如下所示:
我们将从资源文件,即 Test Browser 关键字,向 TC1 添加用户自定义关键字:
上传的资源文件如下所示:
用户自定义关键字已在测试用例 TC1 中使用。
我们现在将执行测试用例:
我们的两个测试用例都已通过。现在让我们查看报告和日志详细信息。
报告 (Report)
日志 (Log)
结论
本章详细介绍了如何编写测试用例、执行测试用例、如何标记测试用例、使用资源等。
关键字和数据驱动测试用例
可以使用关键字或数据驱动方式测试测试用例的工作流程。如果您想使用不同的输入来测试工作流程,可以使用数据驱动测试用例来完成。我们将通过一个示例来介绍以下测试用例方法:
- 关键字驱动式 (Keyword Driven style)
- 数据驱动式 (Data Driven style)
关键字驱动式
我们将进行项目设置以展示关键字驱动式的工作方式。
使用命令行中的 **ride.py** 打开 RIDE。
单击“新建项目”,并为您的项目命名。
项目名称为 *keywordstyle*。单击“确定”保存项目。在此项目中,我们将创建一个用户关键字,如下所示。
右键单击项目名称,然后单击 *新建用户关键字*,如下所示
它将显示如下屏幕:
输入关键字的名称及其将接受的参数。这里我们将关键字命名为 Display Message。Display Message 关键字的作用是,当它被调用时,它将记录一条消息。因此,我们需要为它提供一个参数。因此,在上例中,参数将是一个标量变量 ${msg}。
单击“确定”保存用户关键字。现在我们需要编写关键字需要执行的操作。因此,它将具有如下所示的表格格式,我们可以在其中提供 Robot Framework 提供的库关键字或内置关键字。
这里,我们将使用 Robot Framework 提供的简单 Log 关键字,如下所示:
要获取 Robot Framework 提供的更多关键字,请在表格列中按 Ctrl + 空格键,如下所示:
因此,我们要与测试用例一起使用的关键字已准备就绪。用户关键字的名称为 *Display Message*,它接受一个名为 **${msg}** 的参数。
现在让我们在简单的关键字驱动式测试用例中使用此关键字。为此,我们需要创建测试用例。右键单击创建的项目名称。现在,单击“新建测试用例”:
为测试用例命名,然后单击“确定”。
我们完成了项目设置,现在将为关键字驱动式编写测试用例。
在测试用例中,我们在表格格式中使用了用户自定义关键字 Display Message,如下所示:
我们使用了如上所示创建的关键字,并传递了值 Hello World。
我们将执行测试用例 TC1 并检查输出:
在上例中,我们编写了一个简单的测试用例,该测试用例记录消息,并且测试用例已执行,输出为 *Hello World*。我们可以看到日志中打印的输出 Hello World。测试用例也已通过。
数据驱动式
我们将在同一项目中创建另一个测试用例。我们将测试用例命名为 TC2。
要使用数据驱动式,我们需要创建模板。模板将采用高级关键字的名称,这是一个用户自定义关键字,例如我们一开始创建的名为 Display Message 的关键字。传递给该模板的参数将以测试用例的形式发送。我们可以向该模板关键字传递不同的值。当您想使用不同的数据来测试场景时,通常会使用数据驱动方法。
保存测试用例后。单击测试用例,显示将如下所示:
单击模板的“编辑”按钮并添加用户自定义关键字。
输入模板的用户关键字,然后单击“确定”保存模板。
*Display Message* 关键字接受一个名为 ${msg} 的参数。这是一个标量变量。在此测试用例中传递的详细信息将作为用户自定义关键字 Display Message 的参数。
在 TC2 中,我们添加了模板 Display Message(用户自定义关键字)。我们在表格格式中提供了消息。
现在让我们执行测试用例。
我们可以看到“运行”执行了两个测试用例。TC1 显示的输出为 Hello World。这是我们提供给用户关键字 Display Message 的消息。
对于 TC2,我们使用 Display Message 作为模板。我们在 TC2 中传递了 *My First Test Case* 和 *Testing Template* 作为值。由于用户关键字 Display Message 在内部使用 Log 关键字,因此它会在日志中显示消息,如上所示。
结论
我们在本章中使用了关键字样式和数据驱动样式,并看到了两者的工作方式。数据驱动样式将高级用户自定义关键字作为模板,所有测试用例都作为模板的值。
使用 Selenium 库操作浏览器
在本章中,我们将学习如何在 RIDE 中使用 Robot Framework 和 Selenium 库来处理浏览器。
- 在 RIDE 中进行项目设置
- 导入 Selenium 库
- 使用 Chrome 浏览器的测试用例
- 使用 Firefox 浏览器的测试用例
在 RIDE 中进行项目设置
我们首先在 RIDE 中创建一个项目来处理浏览器。使用命令行中的 ride.py 打开 RIDE。
单击 *新建项目* 并为您的项目命名。
给定的名称为 BrowserTestCases。单击“确定”保存项目。右键单击创建的项目名称,然后单击 *新建测试用例*:
为测试用例命名,然后单击“确定”。
我们完成了项目设置。现在,我们将为浏览器编写测试用例。
导入 Selenium 库
要使用浏览器,我们需要在 Robot 中导入 Selenium 库。我们可以按如下方式执行此操作:
访问 https://robotframework.org/
在左侧,选择库选项 (LIBRARIES)。
从上面选择“外部”选项,它将列出所有可用的库。
单击 SeleniumLibrary。
您将被重定向到如下所示的 GitHub 仓库:
要安装 seleniumlibrary,我们可以使用 GitHub 中的命令并使用 pip 进行安装。
命令
pip install --upgrade robotframework-seleniumlibrary
Selenium 库安装在 Python 的 lib 文件夹中,如下所示:
安装完成后,我们必须按如下步骤在 RIDE 中导入库。
单击左侧的项目,然后从“添加导入”中使用“库”:
单击“库”后,将出现一个屏幕,您需要在其中输入库名称:
单击“确定”,库将显示在设置中。
给定的名称必须与安装在 site-packages 中的文件夹名称匹配。如果名称不匹配,库名称将显示为红色,如下所示:
红色的库导入与库在 Python 中不存在一样。现在,我们已完成 Selenium 库的导入。
使用 Chrome 浏览器的测试用例
要在 Robot 中使用 Chrome 浏览器,我们首先需要安装 Chrome 驱动程序才能与 Selenium 一起使用。驱动程序可在 Selenium 网站上找到:https://www.seleniumhq.org/。
单击如上截图所示的 *下载 Selenium*。
在下载部分,转到 *并非 seleniumhq 开发的第三方浏览器驱动程序*,然后选择 Google Chrome 驱动程序,如下所示突出显示的部分
这里列出了各种浏览器可用的驱动程序。对于 Chrome,请点击 Google Chrome 驱动程序并根据您的操作系统下载最新驱动程序。
点击最新版本。它将根据操作系统显示下载内容——Windows、Linux 和 Mac。
从以上列表中下载适合您操作系统的版本。它会下载一个 zip 文件。文件下载完成后,解压缩它并将 .exe 驱动程序文件复制到 python 文件夹。
我们将文件复制到C:\Python27\Scripts。
现在我们已经完成了 Chrome 驱动程序的安装。我们可以开始编写打开和关闭浏览器的测试用例了。
返回 Ride 并输入打开浏览器的关键字。
Ride 使用其内置工具帮助您使用关键字。输入命令并按下ctrl+空格键。您将获得如下所示的命令的所有详细信息
它提供了命令的详细信息以及使用方法示例。在测试用例中,我们将在 Chrome 中打开网站https://tutorialspoint.com/,测试用例详细信息如下:
现在让我们运行这个测试用例来看看输出:
测试用例已通过;我们可以看到该网站已在 Chrome 浏览器中打开。
我们将添加更多测试用例,如下所示:
打开浏览器 - URL - 在 Chrome 浏览器中打开https://tutorialspoint.com/
捕获页面屏幕截图 - 图片名称为 page.png
关闭浏览器
以下是上面执行的测试用例的报告和日志详细信息。
报告 (Report)
日志 (Log)
日志中的测试用例详细信息
使用 Firefox 浏览器的测试用例
安装 Firefox 驱动程序并将其保存到 python 脚本文件夹。
Firefox 的测试用例
结论
我们已经了解了如何在 Robot Framework 中安装 Selenium 库和浏览器驱动程序以与浏览器一起工作。使用 Selenium 库关键字,我们可以在浏览器中打开任何给定的链接并与其进行交互。测试用例执行的详细信息以报告和日志的形式提供,其中给出了执行时间。
Robot Framework - 使用文本框
对于测试,了解如何与浏览器交互并定位 HTML 元素非常重要。使用 Robot Framework 操作输入字段非常容易。在本章中,我们将学习如何使用 Selenium 库操作文本框。要操作输入字段 - 文本框,我们需要定位器,它是该文本框的主要唯一标识符,它可以是 id、name、class 等。
在本章中,我们将讨论以下方面:
- 文本框测试的项目设置
- 在搜索文本框中输入数据
- 点击搜索按钮
文本框测试的项目设置
我们首先在 RIDE 中创建一个项目来处理浏览器。使用命令行中的 ride.py 打开 RIDE。
点击新建项目并输入项目的名称,如下所示。
项目名称为Textbox。单击“确定”保存项目。右键单击创建的项目名称,然后单击新建测试用例:
命名您的测试用例并单击“确定”进行保存。现在我们完成了项目设置。接下来,我们将为文本框编写测试用例。由于我们需要 Selenium 库,因此我们需要在项目中导入它。
单击左侧的项目,然后从“添加导入”中使用“库”。
单击“库”后,将出现一个屏幕,您需要在其中输入库名称:
单击“确定”,库将显示在设置中。
给定的名称必须与安装在 site-packages 中的文件夹名称匹配。
如果名称不匹配,库名称将显示为红色,如下面的屏幕截图所示:
在文本框中输入数据
现在我们将编写测试用例。测试用例详细信息如下:
打开浏览器 - URL - 在 Chrome 中打开https://tutorialspoint.com/
在https://tutorialspoint.com/中搜索文本框中输入数据
点击搜索
要使用文本框,我们需要一个定位器。定位器是文本框的标识符,例如 id、name、class 等。例如,如果您使用的是:
文本框的name属性,它必须是 name - Nameofthetextbox 或 name=Nameofthetextbox
文本框的id,它将是 id:idoftextbox 或 id=idoftextbox
文本框的class,它将是 class - classfortextbox 或 class=classfortextbox
现在,我们将在 Ride 中添加文本框测试用例的详细信息。以下是为文本框测试用例输入的关键字:
打开浏览器 - 该关键字为给定的 URL 和指定的浏览器打开浏览器。
输入文本 - 此关键字适用于输入类型,并将查找网站https://tutorialspoint.com/上的定位器 name:search,而 angularjs 是我们要在文本框中输入的值。
点击按钮 用于点击具有位置 class:gsc-search-button-v2 的按钮。
我们现在将执行相同的操作:
单击搜索图标后,将出现如下面的屏幕截图所示的屏幕:
现在让我们查看报告和日志详细信息:
报告 (Report)
日志 (Log)
结论
我们已经了解了如何在 Robot Framework 中使用 Selenium 库与文本框进行交互。使用 Robot Framework 提供的关键字和导入的库,我们可以定位文本框并输入数据并进行测试。
Robot Framework - 使用单选按钮
对于测试,了解如何与浏览器交互并定位 HTML 元素非常重要。使用 Robot Framework 操作输入字段非常容易。在本章中,我们将学习如何使用 Selenium 库操作单选按钮。要操作单选按钮,我们需要定位器 - 该单选按钮的主要唯一标识符。
我们将在此处讨论以下内容:
- 单选按钮测试的项目设置
- 单选按钮测试用例
单选按钮测试的项目设置
我们首先在 RIDE 中创建一个项目来处理浏览器。使用命令行中的 ride.py 打开 RIDE。
点击新建项目并输入项目的名称,如下面的屏幕截图所示。
给定的名称是 RadioButton。单击“确定”按钮保存项目。
右键单击创建的项目名称,然后单击新建测试用例:
为测试用例命名并单击“确定”进行保存。我们完成了项目设置,现在将为单选按钮编写测试用例。由于我们需要 Selenium 库,因此我们需要在项目中导入它。
单击左侧的项目,然后从添加导入中使用库。
单击“库”后,将出现一个屏幕,您需要在其中输入库名称:
单击“确定”,库将显示在设置中。
给定的名称必须与安装在 site-packages 中的文件夹名称匹配。如果名称不匹配,它将显示为红色,如下所示:
单选按钮测试用例
单选按钮测试用例将使用定位器选择一个单选按钮。
考虑以下单选按钮的 HTML 显示:
<input type="radio" name="gender" value="male" checked> Male<br/> <input type="radio" name="gender" value="female"> Female<br/>
对于单选按钮,name 是定位器。在上面的示例中,name 是 gender。我们还需要值,以便我们可以选择所需的单选按钮。上面示例中的值是男和女。
现在,我们将创建一个带有单选按钮的测试页面,并在浏览器中打开它。现在,选择单选按钮的值。测试用例详细信息如下:
打开浏览器 - URL - 在 Chrome 中打开https://127.0.0.1/robotframework/radiobutton.html
输入单选按钮的详细信息
执行测试用例
在编写测试用例的关键字时,按 Ctrl + 空格键。您将获得命令的详细信息。单选按钮的详细信息
对于单选按钮,参数是组名和值。以下是单选按钮选择测试用例的详细信息:
以下是单选按钮的测试页面:
Radiobutton.html 的 HTML 代码
<html> <head> <title>Radio Button</title> </head> <body> <form name="myform" method="POST"> <b>Select Gender?</b> <div><br/> <input type="radio" name="gender" value="male" checked> Male<br/> <input type="radio" name="gender" value="female"> Female<br/> </div> </form> </body> </html>
在上面的表单中,我们计划选择 female,它是一个单选按钮。名称和值在测试用例中给出。现在,我们将执行测试用例并检查上面表单中复选框的选择。
让我们执行测试用例并查看浏览器中的显示:
执行测试用例时,它将打开 URL https://127.0.0.1/robotframework/radiobutton.html 并选择 Female 单选按钮,我们在测试用例中给出了它的名称和值。
以下是 Ride 中的执行详细信息:
现在让我们查看报告和日志以了解更多详细信息。
报告详细信息
日志详细信息
测试用例的详细信息
结论
我们已经了解了如何通过向测试用例提供单选按钮的组名来选择单选按钮的值。使用 Robot Framework 提供的关键字和导入的库,我们可以定位单选按钮并选择单选按钮的值。我们确实可以使用 Robot Framework 日志和报告获得执行的测试用例的详细信息。
Robot Framework - 使用复选框
对于测试,了解如何与浏览器交互并定位 HTML 元素非常重要。使用 Robot Framework 操作输入字段非常容易。在本章中,我们将学习如何使用 Selenium 库操作复选框。要操作复选框,我们需要定位器,它是该复选框的主要唯一标识符。定位器可以是 id、name、class 等。
复选框测试的项目设置
我们首先将在 Ride 中创建一个项目来处理浏览器。使用命令行中的ride.py打开 Ride。
点击新建项目并输入项目的名称,如下面的屏幕截图所示。
项目名称为 Checkbox。单击“确定”保存项目。
右键单击创建的项目名称,然后单击新建测试用例:
为测试用例命名并单击“确定”。我们完成了项目设置。现在我们将为复选框编写测试用例。由于我们需要 Selenium 库,因此我们需要在项目中导入它。
单击左侧的项目,然后从添加导入中使用库。
现在,单击“库”。将出现一个屏幕,您需要在其中输入库名称:
单击“确定”,库将显示在设置中。
给定的名称必须与安装在 site-packages 中的文件夹名称匹配。如果名称不匹配,库名称将显示为红色:
复选框测试用例
在测试用例中,我们将选择复选框。要选择复选框,我们需要标识符定位器。
现在考虑以下复选框的 HTML 显示:
<input type="checkbox" name="option1" value="Car"> Car
对于复选框,我们有name作为定位器。在上面的示例中,name是option1。我们还需要值以便我们可以选择它。Car 在上面的示例中保存值。
现在,我们将创建一个带有复选框的测试页面。在浏览器中打开复选框并选择值。
测试用例详细信息如下:
打开浏览器 - URL - 在 Chrome 中打开https://127.0.0.1/robotframework/checkbox.html
输入复选框的详细信息。
执行测试用例。
在编写测试用例的关键字时,按 Ctrl + 空格键。它提供命令的所有详细信息。复选框的详细信息。
要用于复选框的关键字是:
Select checkbox name:nameofcheckbox value
来自 Ride 的命令详细信息如下:
因此,参数是复选框的定位器。以下是复选框选择测试用例的详细信息:
URL 的显示方式如下:
checkbox.html
<html> <head> <title>Checkbox Test Page>/title> </head> <body> <form name="myform" method="POST"> <b>How would you like to travel?</b> <div><br> <input type="checkbox" name="option1" value="Car"> Car<br> <input type="checkbox" name="option2" value="Bus"> Bus<br> <input type="checkbox" name="option3" value="Train"> Train<br> <input type="checkbox" name="option4" value="Air"> Airways<br> <br> </div> </form> </body> </html>
在上面的表单中,我们计划选择 Car,它是一个复选框。详细信息在测试用例中给出。现在,我们将执行测试用例并检查上面表单中复选框的选择。
执行测试用例时,它将打开URL **https://127.0.0.1/robotframework/checkbox.html** 并选中测试用例中指定的名称“Car”。
以下是执行细节:
报告详情
日志详情
结论
本章我们学习了如何通过提供复选框的定位器来选中复选框。日志和报告提供了测试用例执行的详细信息,以及每个测试用例所花费的时间。
Robot Framework - 使用下拉列表
本章我们将学习如何使用Selenium库操作下拉列表。
下拉列表测试的项目设置
首先,我们将在RIDE中创建一个项目来与浏览器交互。使用命令行中的ride.py打开RIDE:
点击新建项目并为您的项目命名。
项目名称为dropdown。点击确定保存项目。
右键单击创建的项目名称,然后点击新建测试用例:
为测试用例命名,然后点击确定保存。
项目设置完成。现在,我们将为下拉列表编写测试用例。由于我们需要Selenium库,我们需要在项目中导入它。
点击左侧的项目,然后使用添加导入中的库,如下所示:
现在,点击库。将出现一个屏幕,您需要在其中输入库名称:
点击确定,库将显示在设置中。
给定的名称必须与安装在 site-packages 中的文件夹名称匹配。
如果名称不匹配,库名称将显示为红色:
库导入显示红色意味着库在python中不存在。所以现在我们完成了selenium库的导入。
下拉列表测试用例
下拉列表的测试用例将从下拉列表中选择值。为此,我们需要该下拉列表的定位器(标识符)。
考虑以下下拉列表的HTML显示:
<select name = "carbrand"> <option value = "">Select car brand..</option> <option value = "audi">AUDI</option> <option value = "bmw">BMW</option> <option value = "chevrolet">CHEVROLET</option> <option value = "datsun">DATSUN</option> </select>
对于下拉列表,name是定位器。在上面的示例中,name是carbrand。我们还需要值,以便我们可以选择它。上面的示例中的值是:audi、bmw、chevrolet和datsun。
现在,我们将创建一个包含下拉列表的测试页面,在浏览器中打开它,然后从下拉列表中选择值。
测试用例详细信息如下:
在Chrome浏览器中打开浏览器URL:**https://127.0.0.1/robotframework/dropdown.html**
输入下拉列表的详细信息
执行测试用例
在RIDE中编写测试用例的关键字时,按Ctrl +空格键。这将显示命令的所有详细信息。
对于下拉列表,我们有三种方法:
- 按索引选择列表项
- 按标签选择列表项
- 按值选择列表项
我们将通过一个示例来演示以上所有情况。
在我们的测试页面中,我们将创建3个下拉列表,并使用上述测试用例按索引、标签和值选择下拉列表。
dropdown.html
<html> <head> <title>Dropdown</title> </head> <body> <form name="myform" method="POST"> <div> Dropdown By Index: <select name = "months"> <option value = "">Select Months.</option> <option value = "Jan">January</option> <option value = "Feb">February</option> <option value = "Mar">March</option> <option value = "Apr">April</option> <option value = "May">May</option> <option value = "Jun">June</option> <option value = "Jul">July</option> <option value = "Aug">August</option> <option value = "Sept">September</option> <option value = "Oct">October</option> <option value = "Nov">November</option> <option value = "Dec">December</option> </select> </div> <br/> <br/> <div> Dropdown By Label: <select name = "days"> <option value = "">Select Day..</option> <option value = "01">01</option> <option value = "02">02</option> <option value = "03">03</option> <option value = "04">04</option> <option value = "05">05</option> <option value = "06">06</option> <option value = "07">07</option> <option value = "08">08</option> <option value = "09">09</option> <option value = "10">10</option> <option value = "11">11</option> <option value = "12">12</option> <option value = "13">13</option> <option value = "14">14</option> <option value = "15">15</option> <option value = "16">16</option> <option value = "17">17</option> <option value = "18">18</option> <option value = "19">19</option> <option value = "20">20</option> <option value = "21">21</option> <option value = "22">22</option> <option value = "23">23</option> <option value = "24">24</option> <option value = "25">25</option> <option value = "26">26</option> <option value = "27">27</option> <option value = "28">28</option> <option value = "29">29</option> <option value = "30">30</option> <option value = "31">31</option> </select> </div> <br/> <br/> <div> Dropdown By Value: <select name = "year"> <option value = "">Select year..</option> <option value = "0">2000</option> <option value = "1">2001</option> <option value = "2">2002</option> <option value = "3">2003</option> <option value = "4">2004</option> <option value = "5">2005</option> <option value = "6">2006</option> <option value = "7">2007</option> <option value = "8">2008</option> <option value = "9">2009</option> <option value = "10">2010</option> <option value = "11">2011</option> <option value = "12">2012</option> <option value = "13">2013</option> <option value = "14">2014</option> <option value = "15">2015</option> <option value = "16">2016</option> <option value = "17">2017</option> <option value = "18">2018</option> </select> </div> </form> </body> </html>
我们将在RIDE中为所有3个下拉列表选择添加测试用例。
对于索引,我们需要传递该下拉列表的定位器——name或id,以及需要选择的元素的索引。
按索引选择列表项 - 示例
<select name = "months"> <option value = "">Select Months.</option> // index 0 <option value = "Jan">January</option> //index 1 <option value = "Feb">February</option> // index 2 <option value = "Mar">March</option> // index 3 <option value = "Apr">April</option> // index 4 <option value = "May">May</option> // index 5 <option value = "Jun">June</option> // index 6 <option value = "Jul">July</option> // index 7 <option value = "Aug">August</option> // index 8 <option value = "Sept">September</option> //index 9 <option value = "Oct">October</option> //index 10 <option value = "Nov">November</option> //index 11 <option value = "Dec">December</option> // index 12 </select>
现在,我们想选择月份为五月,所以测试用例中要提供的索引是5。
标签是在屏幕上打开下拉列表时看到的。
如果您想选择一天,您可以从下拉列表中选择。
按值选择列表项
这是年份列表。列表的值从0到18。
<select name = "year"> <option value = "">Select year..</option> <option value = "0">2000</option> <option value = "1">2001</option> <option value = "2">2002</option> <option value = "3">2003</option> <option value = "4">2004</option> <option value = "5">2005</option> <option value = "6">2006</option> <option value = "7">2007</option> <option value = "8">2008</option> <option value = "9">2009</option> <option value = "10">2010</option> <option value = "11">2011</option> <option value = "12">2012</option> <option value = "13">2013</option> <option value = "14">2014</option> <option value = "15">2015</option> <option value = "16">2016</option> <option value = "17">2017</option> <option value = "18">2018</option> </select>
如果您想选择任何年份,请取与年份对应的值,并将其添加到测试用例中。例如,如果您想选择2017年,则值为17。
以下是测试用例的最终列表:
执行后,以下是根据测试用例对下拉列表进行的选择:
执行详情
报告详细信息
日志详细信息
日志中的测试用例详情
结论
我们已经看到了如何按值、索引和标签操作下拉列表。我们可以参考日志和报告来获取已执行测试用例的详细信息。
Robot Framework - 使用关键字
在Robot Framework中,测试用例是使用关键字在测试用例表中构建的。本章将介绍Robot Framework中使用的关键字的详细信息。Robot中使用两种类型的关键字:
- 库关键字
- 用户自定义关键字
库关键字
库关键字是我们导入到Robot Framework中的库提供的关键字。现在我们将看看Selenium库,它帮助我们与浏览器交互。我们将讨论一些与Selenium库相关的重要的关键字。
请按照以下步骤导入Selenium库:
与Selenium库安装相关的详细信息在“使用Selenium库操作浏览器”一章中讨论。使用命令行中的ride.py打开RIDE。
点击新建项目并为您的项目命名。项目名称为**LibraryKeywords**。
右键单击创建的项目名称,然后单击新建测试用例:
为测试用例命名,然后点击确定。
项目设置完成。现在,我们将编写测试用例来演示库关键字的工作原理。由于我们需要Selenium库,我们需要在项目中导入它。
点击左侧的项目,然后点击库。
单击“库”后,将出现一个屏幕,您需要在其中输入库名称:
单击“确定”,库将显示在设置中。
给定的名称必须与安装在 site-packages 中的文件夹名称匹配。
现在将在创建的项目中创建测试用例并使用一些重要的关键字。
点击创建的测试用例TC1,并在表格形式中输入打开浏览器并在打开的表单中输入数据的关键字。
这是一个使用库关键字的简单测试用例:
要获得此关键字的更多详细信息,在键入关键字时按ctrl +空格键。它将显示输入的库关键字的详细信息。
这是一个关于打开浏览器的示例,如果您需要该关键字的任何帮助,您可以在键入关键字时使用ctrl +空格键。
打开浏览器关键字详情
同样,我们有库关键字来处理输入、单选按钮、文本等。
我们将执行我们输入的测试用例,以使用URL打开浏览器:https://tutorialspoint.com/并在输入文本中输入详细信息。
我们已经执行了测试用例。您可以看到文本框包含我们在测试用例中提供的所有详细信息。
用户自定义关键字
可以创建用户自定义关键字来执行测试用例中的特定操作,也可以使用Robot Framework中的库关键字和内置关键字来创建。
我们将使用上面创建的相同项目,在其中创建用户自定义关键字并在测试用例中使用。
要在RIDE中创建关键字,请右键单击您的项目,然后点击新建用户关键字,如下所示:
点击新建用户关键字后,将出现如下所示的屏幕:
输入关键字的名称,然后点击确定。屏幕还显示参数。我们将在后续部分讨论参数与关键字的关系。
我们已将关键字名称命名为BrowserDetails。点击确定保存。已创建关键字BrowserDetails。
要测试浏览器中的URL,我们必须重复输入打开浏览器、**最大化浏览器**关键字。
现在,我们将创建一个用户自定义关键字,其中包含打开浏览器和最大化浏览器详细信息。创建的关键字将在我们的测试用例中使用。
我们的BrowserDetails关键字是重复使用的其他关键字的组合。
现在,我们将如下所示在测试用例中使用创建的关键字。
测试用例
考虑到上述测试用例,我们将使用用户自定义关键字BrowserDetails。
现在,我们将用用户自定义关键字替换1和2个关键字:
现在让我们运行测试用例以查看输出:
测试用例的执行完美无缺。
现在,我们将了解关键字中参数的用法。
这是我们创建的关键字:
关键字的名称是BrowserDetails。我们可以在项目下创建的其他测试用例中使用此关键字。该关键字包含硬编码的浏览器URL。如果我们想在另一个具有不同URL的测试用例中使用该关键字,则这是不可能的。
我们可以使用参数来帮助我们处理硬编码参数。我们将返回到创建的关键字并使用参数。
点击参数旁边的编辑。
输入要与关键字一起使用的参数。
如果有多个参数,可以使用管道符号(|)分隔它们。现在,我们将如下所示在关键字中使用参数:
返回您的测试用例。现在,您需要传递要用于测试用例的值,即URL。
在测试用例中,当您键入用户自定义关键字并按Ctrl +空格键时,它将显示关键字以及参数的详细信息。
以下是关键字BrowserDetails的详细信息:
测试用例现在将具有作为参数传递的URL。
现在让我们运行测试用例以查看输出:
传递给用户自定义关键字的关键字和参数运行良好。
现在让我们更改URL;我们将使用https://www.google.com/
关键字BrowserDetails的URL已更改为https://www.google.com/
我们将输入文本的参数更改为google网站上提供的id。要获取输入字段的id、name或class,您可以在浏览器中检查。
让我们运行上述测试用例并查看输出。
成功执行后,上述测试用例将生成以下输出:
结论
在本章中,我们学习了如何获取内置关键字的帮助。我们还学习了如何创建用户自定义关键字,它可以是库关键字和内置关键字的组合。
Robot Framework - 使用变量
本章将讨论如何在Robot Framework中创建和使用变量。变量用于保存值,这些值可用于测试用例、用户自定义关键字等。
我们将讨论Robot Framework中可用的以下变量:
- 标量变量
- 列表变量
- 字典变量
我们将借助RIDE中的测试用例来了解每个变量的工作原理。
标量变量
标量变量将被它们分配的值替换。标量变量的语法如下:
${variablename}
我们可以使用标量变量来存储字符串、对象、列表等。我们首先创建一个简单的测试用例,并在其中使用标量变量。
在命令行中使用**ride.py**打开RIDE并创建一个新项目。
点击新建项目。
现在,为您的项目命名。
名称为variables。点击确定保存项目。
右键单击创建的项目名称,然后单击新建测试用例:
为测试用例命名,然后点击确定。
项目设置已完成,现在我们将编写用于测试用例的标量变量的测试用例。由于我们需要Selenium库,我们需要在项目中导入它。
单击左侧的项目,然后从“添加导入”中使用“库”:
单击“库”后,将出现一个屏幕,您需要在其中输入库名称:
单击“确定”,库将显示在设置中。
给定的名称必须与安装在 site-packages 中的文件夹名称匹配。
如果名称不匹配,库名称将显示为红色 -
标量变量测试用例
在上面的测试用例中,我们硬编码了值,例如URL、电子邮件、密码,这些值提供给测试用例。可以使用变量存储使用值,而不是硬编码,我们可以在这些地方使用变量。
要创建标量变量,请右键单击您的项目,然后单击新建标量,如下所示 -
单击“新建标量”将打开以下屏幕,用于创建变量以及在测试用例中使用变量时需要替换的值。
我们在“名称”字段中获得${}。
在这里,我们需要在花括号内输入变量的名称,如下面的屏幕所示 -
变量的名称是${url}。其值为 - https://127.0.0.1/robotframework/login.html。
我们添加了如上所示的注释。单击“确定”保存标量变量。变量的详细信息将如下所示添加 -
变量名称显示在创建的项目下,如下所示 -
现在让我们在测试用例中使用创建的标量变量。
使用硬编码URL的测试用例
在上面的测试用例中,我们必须将URL替换为我们刚刚创建的变量。
使用URL标量变量的测试用例
现在,我们将运行测试用例以查看它是否正在从变量中获取URL。以下是运行时获得的输出。URL https://127.0.0.1/robotframework/login.html是从我们创建的标量变量中获取的。
执行详情
使用变量的优点是您可以更改该变量的值,并且它将反映在所有测试用例中。您可以在该项目下创建的许多测试用例中使用这些变量。当您想要更改某些内容时,硬编码值可能是一个严重的问题,您必须转到各个测试用例并更改其值。在一个地方拥有变量使我们可以灵活地以不同的变量值进行测试。
现在,我们将研究下一种类型的变量,称为列表变量。
列表变量
列表变量将包含一个值数组。要获取值,列表项将作为参数传递给列表变量。
语法
@{variablename}
假设我们有值A、B。要引用这些值,我们需要按如下方式传递列表项 -
@{variablename}[0] // A @{variablename}[1] // B
要添加列表变量,请右键单击项目并单击新建列表变量。
单击新建列表变量后,将出现一个屏幕,我们可以在其中输入值 -
名称为@{},后跟Value。它还选择了4列。现在,我们将只使用第1列并创建列表变量,其中将包含以下值:电子邮件ID和密码 -
列表变量的名称为@{LOGIN_DETAILS},给定的值为[email protected]和admin,其中包含登录页面的电子邮件ID和密码。
单击“确定”保存列表变量。变量将列在项目下方,如下所示 -
使用的变量详细信息列在“设置”选项卡中 -
现在,我们将按如下所示在测试用例中添加列表变量。
在这里,我们为“输入文本”和“密码”硬编码了值。现在,我们将将其更改为使用列表变量。
使用列表变量
现在,我们将执行测试用例以查看它是否正在从列表变量中获取值 -
它已从列表变量中获取电子邮件ID和密码,如上面的测试屏幕所示。
以下屏幕截图显示了相同的执行详细信息 -
在下一节中,我们将学习字典变量。
字典变量
字典变量类似于列表变量,其中我们将索引作为参数传递;但是,在字典变量的情况下,我们可以存储详细信息 - 键值对形式。在测试用例中使用它时,它更容易引用,而不是使用索引0、1等。
语法
&{Variablename}
假设我们将值存储为key1=A,key2=B。它将在测试用例中引用为 -
&{Variablename}[key1] // A &{Variablename}[key2] // B
让我们在RIDE中创建字典变量。
右键单击项目,然后单击新建字典变量。
单击新建字典变量后,将出现如下所示的屏幕 -
屏幕中的默认名称为&{},它具有“值”和“列”选项。
我们将输入名称和将在测试用例中使用的值。
单击“确定”保存变量。变量将列在项目下,也列在设置中,如下所示 -
我们将更改测试用例以获取字典值。
我们将更改为字典变量,如下所示。
使用字典变量
单击运行后,我们将获得以下结果 -
执行详细信息如下 -
到目前为止,我们已经看到了“编辑”和“运行”选项卡。对于TextEdit,我们有编写的测试用例的详细信息。我们也可以在TextEdit中添加所需的变量。
测试用例
我们在上面的测试用例中使用了标量变量和字典变量。到目前为止,这是TextEdit中的代码;这是基于编写的测试用例 -
使用的变量以红色突出显示。我们也可以像下面那样直接在TextEdit中创建所需的变量 -
我们添加了一个名为${new_url}的标量变量,其给定的值为https://tutorialspoint.com/。
单击左上角的应用更改按钮,变量将显示在项目下,如下所示 -
同样,可以在需要时直接在TextEdit选项卡中创建其他变量 - 列表和字典变量。
结论
我们已经了解了如何创建和使用变量。Robot Framework支持三种类型的变量:标量、列表和字典。我们详细讨论了所有这些变量的工作方式。
使用命令行
在本章中,我们将学习如何使用命令行运行测试用例。
首先,让我们打开命令提示符并转到保存测试用例的文件夹。我们创建了测试用例并保存在C盘的robotframework文件夹中。
到目前为止创建的测试用例位于C:\robotframework文件夹中。
如果您将项目保存为文件,则命令为 -
robot -T nameoftestcase.robot
如果您将项目保存为目录,则命令为 -
robot -T projectname testsuite
我们将从文件夹中运行一个创建的测试,如下所示 -
输出、日志和报告路径在最后显示,如上所示。
以下屏幕截图显示了执行详细信息 -
报告 (Report)
日志 (Log)
结论
我们可以使用命令行执行Robot测试用例。测试用例通过或失败的详细信息将与日志和报告URL一起显示在命令行中。
使用测试设置和测试清理
在本章中,我们将了解测试领域中的两个重要概念 - 设置和拆卸。
设置
这是一组关键字或指令,在测试套件或测试用例执行开始之前执行。
拆卸
这是一组关键字或指令,在测试套件或测试用例执行开始之后执行。
我们将进行项目设置,其中将同时使用设置和拆卸。浏览器打开和关闭是测试用例中的常见步骤。
现在,我们将在设置中添加关键字open browser,并在拆卸中添加close browser。
使用命令行中的ride.py命令打开RIDE并创建一个新项目。
单击新建项目以创建项目。
单击“确定”保存项目。
单击新建测试用例以创建一个。
单击“确定”保存测试用例。
现在我们需要导入SeleniumLibrary以使用与浏览器相关的关键字并与页面交互。
要导入库,请单击库 -
单击“确定”保存库。
在上图中,“设置”部分具有设置和拆卸选项。对于设置,单击编辑以输入关键字。
现在,输入关键字 -
参数必须用管道字符(|)分隔。
单击“确定”保存设置。我们已输入关键字Open browser,并添加了如上所示的参数。
现在,我们将输入拆卸用例。
单击拆卸的“编辑”并输入关键字。
单击“确定”保存拆卸。
现在,我们将输入测试用例的关键字。
测试用例中只有输入文本。浏览器的打开和关闭是从设置和拆卸设置中完成的。
测试执行详细信息
结论
设置和拆卸在测试领域中起着至关重要的作用。我们已经了解了如何在测试用例中使用设置和拆卸,以及它们是如何执行的。
使用内置库
在本章中,我们将介绍Robot Framework附带的一些重要的内置关键字。我们可以将这些关键字与外部库一起用于编写测试用例。我们还默认情况下可以使用Robot Framework提供的内置库。它主要用于验证(例如 - Should Be Equal、Should Contain)、转换(转换为整数、记录到控制台等)。
我们将处理一个简单的测试用例,并将使用其中的内置库。
我们已在RIDE中创建项目和测试用例,如下所示 -
我们创建了2个标量变量 - number和name,如下所示 -
以下是用于比较数字、字符串、连接等的测试用例。我们在下面的测试用例中使用了简单的关键字。关键字在此处以表格形式显示 -
以下是来自文本编辑器的上述测试用例的测试代码 -
现在,我们将执行测试用例以查看结果。
当您以表格格式编写关键字时,请按 Ctrl + 空格键。它会列出 Robot Framework 中可用的内置关键字。
它在相应的窗口中提供了每个关键字的详细信息以及示例。当我们点击相应的窗口时,它将单独打开,如下所示:
结论
我们已经看到了 Robot Framework 默认提供的与字符串、数字、日志消息相关的关键字。这些关键字可以与外部库一起使用,也可以用于创建用户自定义关键字来处理测试用例。
使用外部数据库库
我们已经了解了如何使用 Selenium 库。Selenium 库的详细安装/导入在“使用 Selenium 库处理浏览器”一章中进行了讨论。
本章将讨论数据库库,以及如何使用 Robot Framework 连接和测试数据库。
访问 Robot Framework 网站 https://robotframework.org/ 并点击库,如下所示:
点击库后,您将被重定向到如下所示的屏幕:
库分为标准库、外部库和其他库。
本章我们将重点介绍外部库。点击外部库后,将显示以下屏幕:
它显示了 Robot Framework 支持的外部库列表。在这里,我们将更多地关注数据库库 (Python)。上面的屏幕截图中已突出显示。
点击数据库库 (Python) 后,您将被重定向到一个屏幕,其中列出了安装说明,如下面的屏幕截图所示:
我们可以使用 pip 安装数据库库,命令如下:
pip install -U robotframework-databaselibrary
在命令行中运行上述命令,如下所示:
库存储在 python 库文件夹中,如下所示:
安装完成后,下一步是在项目内部导入库,并将其与测试用例一起使用。
导入数据库库
使用命令行中的ride.py打开 RIDE,并创建用于测试数据库的项目。
点击新建项目,并为项目命名。
单击“确定”保存项目。
在“添加导入”下点击“库”。
将库名称输入为 DatabaseLibrary,如下所示,然后点击确定。
保存后,库如下所示:
我们将使用 MySQL 数据库。要使用 MySQL,我们需要安装模块。
命令
pip install pymysql
现在,在创建的项目下创建测试用例。
点击新建测试用例:
输入测试用例的名称,然后单击确定。
我们将使用现有的名为 customers 的数据库。
我们将使用 phpMyAdmin 来显示 customer 数据库:
我们有一个名为 customer 的表,其中数据分布在 6 行中。现在,我们将编写一个测试用例,它将连接到 MySQL 数据库 customers 并从 customer 表中获取数据。
在开始之前,我们将创建标量变量来保存dbname、dbuser、dbpasswd、dbhost、dbport 和 queryresult 等数据。以下是创建的变量及其值:
连接到数据库的命令是:
Connect To Database pymysql ${dbname} ${dbuser} ${dbpasswd} ${dbhost} ${dbport}
我们将添加更多测试用例,如下所示:
以下是详细信息:
*** Settings *** Library DatabaseLibrary *** Variables *** ${dbname} customers ${dbuser} root ${dbpasswd} admin ${dbhost} localhost ${dbport} 3306 @{queryResults} *** Test Cases *** TC1 Connect To Database pymysql ${dbname} ${dbuser} ${dbpasswd} ${dbhost} ${dbport} Table Must Exist customer Check If Exists In Database SELECT * FROM customer @{queryResults} Query SELECT * FROM customer Log @{queryResults}[0]
我们已连接到数据库,检查了表 customer 是否存在于数据库中,执行了查询并记录了查询的详细信息。
我们将执行测试用例并查看输出。
查询结果显示了表中的结果。
日志详细信息
TC1 的详细信息
结论
我们已经了解了如何导入数据库库及其安装。现在我们知道了如何在 Robot Framework 中连接到 MySQL 数据库并测试表。
使用 Robot Framework 测试登录页面
通过 Robot Framework,我们到目前为止已经学习了以下内容:
- 导入库
- 使用变量
- 创建自定义关键字
- 如何编写测试用例
- 如何创建设置和拆卸
- 如何执行测试用例
- 如何使用数据驱动测试用例
本章将使用以上所有功能来测试登录页面。我们有一个登录页面,它需要输入电子邮件 ID 和密码。当您输入正确的电子邮件 ID 和密码时,您将被重定向到欢迎页面。如果用户输入无效的电子邮件 ID 或密码,页面将被重定向到错误页面。
以下屏幕截图显示了一个登录页面:
HTML 代码
<html> <head> <title>Login Page</title> </head> <body> <script type="text/javascript"> function wsSubmit() { if (document.getElementById("email").value == "[email protected]" && document.getElementById("passwd").value == "admin") { location.href = "https://127.0.0.1/robotframework/success.html"; } else { location.href = "https://127.0.0.1/robotframework/loginfailed.html"; } } </script> <div id="formdet"> Email : <input type="text" id="email" value="" id="email" /><br/><br/> Password : <input type="password" id="passwd" value="" /><br/><br/> <input type="submit" id="btnsubmit" value="Submit" onClick="wsSubmit();"/> </div> </body> </html>
当电子邮件 ID 或密码无效时,将出现以下屏幕:
HTML 代码
<html> <head> <title>Login Failed</title> </head> <body> <div id="loginfailed"> <h1>Login Failed</h1> </div> </body> </html>
当电子邮件 ID 和密码均有效时,将出现以下屏幕:
HTML 代码
<html> <head> <title>Login Successful</title> </head> <body> <div id="loginfailed"> <h1>Login Successful</h1> </div> </body> </html>
现在我们将为上述测试页面编写测试用例。首先,我们将运行命令以打开 RIDE。
命令
ride.py
完成后,我们将开始进行项目设置,如下所示:
点击新建项目并输入项目名称。
我们将项目的类型保存为目录。项目名称为 testlogin。
单击“确定”保存项目。
现在,我们将在这个项目中创建一个测试套件。
点击新建套件,它将显示如下所示的屏幕:
点击确定保存测试套件。我们需要导入 Selenium 库,因为我们将使用浏览器。
在主项目和创建的测试套件中导入库。
点击库,如上图所示。点击库后,将出现以下屏幕。
点击确定保存项目的库。
将库保存到项目后,它将在设置中显示库:
对创建的测试套件重复相同的步骤。
以下是为测试套件添加的库:
现在,在主项目中,我们将创建一个设置和拆卸。我们希望在 Chrome 浏览器中打开登录页面并最大化窗口。在拆卸中,我们将关闭浏览器。
对于设置,我们将创建一个名为打开登录页面的用户自定义关键字。此关键字将接受 2 个参数,登录页面 URL 和浏览器名称。
现在,我们需要 2 个标量变量来帮助我们存储值 - url 和浏览器名称。
在 RIDE 中,创建 2 个变量${loginpage}和${browser},如下所示:
${loginpage}
${browser}
保存这两个变量。
变量将显示在您的项目下,如下所示:
现在,我们将为主项目添加设置和拆卸。
点击左侧的项目。在设置中,点击套件设置。
我们创建了使用用户关键字打开登录页面以及参数${loginpage}和${browser}的设置。
点击确定保存设置。
现在,我们必须创建用户自定义关键字打开登录页面,方法如下:
右键点击项目并点击新建用户关键字:
点击新建用户关键字后,将出现以下屏幕:
这里关键字有两个参数:${loginpage}和${browser}。点击确定保存用户关键字。
现在我们需要输入库关键字,它将打开 URL。
打开登录页面用户自定义关键字具有以下详细信息:
*** Keywords *** Open Login Page [Arguments] ${loginpage} ${browser} Open Browser ${loginpage} ${browser} Maximize Browser Window Title Should Be Login Page
现在,我们将为套件创建套件拆卸。
点击套件拆卸的编辑,并输入详细信息:
对于套件拆卸,我们直接使用库关键字,它将关闭浏览器。点击确定保存套件拆卸。
现在,点击我们创建的 Testlogin 套件。
现在让我们为测试套件创建设置 - 测试设置。此设置需要首先执行。
点击测试设置的编辑,并输入详细信息。
对于测试设置,我们创建了一个名为登录页面显示的用户自定义关键字,它将采用${loginpage}作为参数,如上图所示。
点击确定保存测试设置。
现在,我们需要创建用户关键字登录页面显示。
右键点击测试套件并点击新建用户关键字,如下所示:
新建用户关键字将显示如下所示的屏幕:
点击确定保存关键字。
现在让我们输入用户关键字登录页面显示所需的关键字。
在这里,我们想转到loginpage并检查页面的标题是否与给定的值匹配。
现在,我们将向测试套件添加模板并创建数据驱动测试用例。
要创建模板,请点击套件,然后在右侧点击测试模板的编辑。
您将被定向到以下屏幕:
Test Login 又是一个用户定义的关键字。点击确定保存模板。
在创建 Test Login 关键字之前,我们需要一些标量变量。标量变量将包含电子邮件 ID、密码、successpage、failurepage 等的详细信息。
我们将为测试套件创建标量变量,如下所示:
我们创建了电子邮件、密码、successpage 和 failurepage 标量变量,如上图所示。
现在,我们将创建Test Login用户定义关键字。右键点击测试套件并点击新建用户关键字。
点击确定保存关键字。
以下屏幕截图显示了为 Test Login 输入的关键字:
输入电子邮件、输入密码、提交详细信息和登录应失败是用户定义的关键字,其定义如下:
输入电子邮件
输入密码
提交详细信息
登录应失败
现在,我们将编写测试用例,这些测试用例将不同的电子邮件 ID 和密码详细信息传递给创建的模板。
以下是测试用例列表:
无效电子邮件 ID 测试用例
电子邮件使用[email protected]作为值,${password}是存储在变量中的密码。
无效密码
无效电子邮件 ID 和密码
空电子邮件 ID
空密码
空电子邮件和密码
现在,我们完成了测试用例,可以运行它们了。
转到运行选项卡,然后点击开始以执行测试用例。
以下是测试用例的日志消息:
20181027 18:11:40.353 : INFO : Opening browser 'chrome' to base url ' https://127.0.0.1/robotframework/login.html'. 20181027 18:11:45.960 : INFO : Page title is 'Login Page'. Starting test: Testlogin.Testlogin Suite.Invalid EmailId 20181027 18:11:45.991 : INFO : Opening url 'https://127.0.0.1/robotframework/login.html' 20181027 18:11:46.169 : INFO : Page title is 'Login Page'. 20181027 18:11:46.180 : INFO : Typing text '[email protected]' into text field 'email'. 20181027 18:11:46.706 : INFO : Typing text 'admin' into text field 'passwd'. 20181027 18:11:47.075 : INFO : Clicking button 'btnsubmit'. 20181027 18:11:47.565 : INFO : Current location is 'https://127.0.0.1/robotframework/loginfailed.html'. 20181027 18:11:47.584 : INFO : Page title is 'Login Failed'. Ending test: Testlogin.Testlogin Suite.Invalid EmailId Starting test: Testlogin.Testlogin Suite.Invalid Password 20181027 18:11:47.600 : INFO : Opening url 'https://127.0.0.1/robotframework/login.html' 20181027 18:11:47.767 : INFO : Page title is 'Login Page'. 20181027 18:11:47.783 : INFO : Typing text '[email protected]' into text field 'email'. 20181027 18:11:48.342 : INFO : Typing text 'invalid' into text field 'passwd'. 20181027 18:11:48.701 : INFO : Clicking button 'btnsubmit'. 20181027 18:11:49.035 : INFO : Current location is 'https://127.0.0.1/robotframework/loginfailed.html'. 20181027 18:11:49.051 : INFO : Page title is 'Login Failed'. Ending test: Testlogin.Testlogin Suite.Invalid Password Starting test: Testlogin.Testlogin Suite.Invalid EmailId And Password 20181027 18:11:49.054 : INFO : Opening url 'https://127.0.0.1/robotframework/login.html' 20181027 18:11:49.213 : INFO : Page title is 'Login Page'. 20181027 18:11:49.221 : INFO : Typing text 'invalid' into text field 'email'. 20181027 18:11:49.555 : INFO : Typing text 'invalid' into text field 'passwd'. 20181027 18:11:49.883 : INFO : Clicking button 'btnsubmit'. 20181027 18:11:50.162 : INFO : Current location is 'https://127.0.0.1/robotframework/loginfailed.html'. 20181027 18:11:50.176 : INFO : Page title is 'Login Failed'. Ending test: Testlogin.Testlogin Suite.Invalid EmailId And Password Starting test: Testlogin.Testlogin Suite.Empty Emailid 20181027 18:11:50.188 : INFO : Opening url 'https://127.0.0.1/robotframework/login.html' 20181027 18:11:50.302 : INFO : Page title is 'Login Page'. 20181027 18:11:50.306 : INFO : Typing text '' into text field 'email'. 20181027 18:11:50.486 : INFO : Typing text 'admin' into text field 'passwd'. 20181027 18:11:50.693 : INFO : Clicking button 'btnsubmit'. 20181027 18:11:50.935 : INFO : Current location is 'https://127.0.0.1/robotframework/loginfailed.html'. 20181027 18:11:50.958 : INFO : Page title is 'Login Failed'. Ending test: Testlogin.Testlogin Suite.Empty Emailid Starting test: Testlogin.Testlogin Suite.Empty Password 20181027 18:11:50.958 : INFO : Opening url 'https://127.0.0.1/robotframework/login.html' 20181027 18:11:51.063 : INFO : Page title is 'Login Page'. 20181027 18:11:51.071 : INFO : Typing text '[email protected]' into text field 'email'. 20181027 18:11:51.367 : INFO : Typing text '' into text field 'passwd'. 20181027 18:11:51.561 : INFO : Clicking button 'btnsubmit'. 20181027 18:11:51.796 : INFO : Current location is 'https://127.0.0.1/robotframework/loginfailed.html'. 20181027 18:11:51.808 : INFO : Page title is 'Login Failed'. Ending test: Testlogin.Testlogin Suite.Empty Password Starting test: Testlogin.Testlogin Suite.Empty Email And Password 20181027 18:11:51.811 : INFO : Opening url 'https://127.0.0.1/robotframework/login.html' 20181027 18:11:51.908 : INFO : Page title is 'Login Page'. 20181027 18:11:51.916 : INFO : Typing text '' into text field 'email'. 20181027 18:11:52.049 : INFO : Typing text '' into text field 'passwd'. 20181027 18:11:52.193 : INFO : Clicking button 'btnsubmit'. 20181027 18:11:52.419 : INFO : Current location is 'https://127.0.0.1/robotframework/loginfailed.html'. 20181027 18:11:52.432 : INFO : Page title is 'Login Failed'. Ending test: Testlogin.Testlogin Suite.Empty Email And Password
结论
在这里,我们已经看到了如何使用不同的输入来测试登录页面,这将验证登录是否正常工作。日志部分给出了执行过程的详细信息。