一、RF简单介绍:

RF(Robot Framework)是一个基于Python的通用自动化测试框架,主要用于验收测试、验收测试驱动开发(ATDD)和机器人流程自动化(RPA)。它采用关键字驱动(Keyword-Driven)的测试方法,语法简洁易懂,即使是非编程背景的测试人员也能快速上手。

1、RF框架的核心特点:

  1. 关键字驱动
    将测试逻辑封装为“关键字”,测试用例通过组合关键字实现,无需编写复杂代码。例如:

    登录测试
        打开浏览器    https://example.com    Chrome
        输入文本    用户名输入框    admin
        输入文本    密码输入框    123456
        点击按钮    登录按钮
        验证页面包含    欢迎回来
        关闭浏览器
    
  2. 跨平台、跨技术
    支持Web测试(结合Selenium)、接口测试(结合Requests)、移动应用测试(结合Appium)、数据库测试等,几乎覆盖所有主流测试场景。

  3. 丰富的生态
    拥有大量第三方库(称为“测试库”),如:

    • SeleniumLibrary:Web自动化测试
    • RequestsLibrary:HTTP接口测试
    • DatabaseLibrary:数据库操作
    • AppiumLibrary:移动端测试
  4. 易扩展
    支持自定义关键字(用Python或Java编写),可将复杂逻辑封装后供测试用例调用。

  5. 详细的报告
    执行后自动生成HTML格式的测试报告,包含用例执行结果、日志、截图(如需)等,便于分析问题。

1、RF框架的基本组成:

  • 测试用例(Test Cases):核心执行单元,由关键字组合而成。
  • 测试套件(Test Suites):包含多个测试用例的集合,通常用目录或文件组织。
  • 关键字(Keywords):可复用的操作单元,分为内置关键字、库关键字和自定义关键字。
  • 变量(Variables):存储测试数据(如账号、URL),支持从外部文件(.yaml/.json等)导入。
  • 资源文件(Resource Files):存放共享的关键字、变量,供多个测试套件复用。

3、简单使用流程:

  1. 安装框架:pip install robotframework
  2. 安装所需测试库:pip install robotframework-seleniumlibrary
  3. 编写测试用例(.robot文件)
  4. 执行测试:robot testcase.robot
  5. 查看生成的report.html和log.html报告

RF框架特别适合测试团队协作(开发人员编写关键字,测试人员编写用例),或需要快速实现自动化的场景。其低代码特性降低了自动化门槛,但也支持通过编程扩展复杂功能,灵活性较高。

使用Robot Framework(RF)实现网页登录测试,通常需要结合 SeleniumLibrary 库(用于Web自动化操作)。以下是详细步骤和示例:

二、如何使用RF框架实现某个网页的登录:

1、前提准备

  1. 安装必要库

    pip install robotframework
    pip install robotframework-seleniumlibrary  # Web自动化核心库
    pip install webdriver-manager  # 自动管理浏览器驱动
    
  2. 准备浏览器驱动
    webdriver-manager 会自动下载对应浏览器的驱动(如Chrome、Firefox),无需手动配置。

2、实现网页登录的测试用例

假设测试目标:登录一个示例网站(如模拟的登录页 https://example-login.com),包含用户名输入框、密码输入框和登录按钮。

步骤1:创建测试用例文件(login_test.robot)
*** Settings ***
# 导入Selenium库
Library           SeleniumLibrary
# 超时时间设置(秒)
Suite Setup       Open Browser    https://example-login.com    Chrome    # 套件初始化:打开浏览器
Suite Teardown    Close Browser                                       # 套件结束:关闭浏览器
Test Timeout      30

*** Variables ***
# 定义测试数据(可替换为实际网站的元素定位和账号密码)
${USERNAME}       test_user
${PASSWORD}       test_pass123
${USER_INPUT}     id=username    # 用户名输入框的定位方式(id属性)
${PASS_INPUT}     id=password    # 密码输入框的定位方式
${LOGIN_BUTTON}   xpath=//button[@type='submit']  # 登录按钮的xpath定位
${SUCCESS_MSG}    xpath=//div[contains(text(), '登录成功')]  # 登录成功提示

*** Test Cases ***
# 测试用例1:正常登录
成功登录测试
    [Documentation]    验证使用正确账号密码可以登录成功
    输入用户名密码并登录
    验证登录成功

# 测试用例2:错误密码登录(负面测试)
错误密码登录测试
    [Documentation]    验证使用错误密码登录失败
    输入用户名    ${USERNAME}
    输入密码      wrong_password
    点击登录按钮
    验证登录失败    密码错误

*** Keywords ***
# 关键字1:输入用户名
输入用户名
    [Arguments]    ${username}
    Input Text    ${USER_INPUT}    ${username}    # 调用Selenium的输入文本方法

# 关键字2:输入密码
输入密码
    [Arguments]    ${password}
    Input Text    ${PASS_INPUT}    ${password}

# 关键字3:点击登录按钮
点击登录按钮
    Click Element    ${LOGIN_BUTTON}
    Sleep    2    # 等待2秒,确保页面加载完成(实际可改用智能等待)

# 关键字4:组合操作:输入并登录
输入用户名密码并登录
    输入用户名    ${USERNAME}
    输入密码      ${PASSWORD}
    点击登录按钮

# 关键字5:验证登录成功
验证登录成功
    Page Should Contain Element    ${SUCCESS_MSG}    # 检查页面是否包含成功提示
    Log    登录成功验证通过

# 关键字6:验证登录失败
验证登录失败
    [Arguments]    ${error_msg}
    Page Should Contain    ${error_msg}    # 检查页面是否包含错误提示
    Log    登录失败验证通过(预期结果:${error_msg})

3、关键说明

  1. 元素定位方式
    RF中通过 SeleniumLibrary 支持多种定位方式,如:

    • id=xxx(优先推荐,最稳定)
    • xpath=//xxx(灵活,适合复杂场景)
    • name=xxxcss=xxx
      可通过浏览器F12开发者工具获取元素属性。
  2. 关键字封装
    将重复操作(如“输入用户名”“点击登录”)封装为关键字,提高用例复用性。

  3. 等待机制

    • 示例中用 Sleep 2 简单等待,实际推荐使用 Wait Until Page Contains Element 等智能等待,避免因加载延迟导致用例失败:
      Wait Until Page Contains Element    ${SUCCESS_MSG}    10    # 最多等待10秒,直到元素出现
      
  4. 测试数据分离
    变量(如账号密码)可单独放在 variables.yaml 文件中,通过 Variable File 导入,便于维护。

4、执行测试

在命令行中运行:

robot login_test.robot

执行完成后,会生成:

  • report.html:测试汇总报告
  • log.html:详细执行日志(包含每一步操作和截图,如需截图可添加 Capture Page Screenshot 关键字)

5、注意事项

  • 替换示例中的网址(https://example-login.com)和元素定位(id=username 等)为实际测试网站的信息。
  • 对于复杂场景(如验证码、弹窗),需额外处理(如调用接口绕过验证码)。

三、如何使用RF框架实现ssh:

要使用Robot Framework(RF)实现SSH登录操作,需要借助专门的SSH测试库——robotframework-sshlibrary。这个库提供了一系列SSH相关的关键字,可用于连接服务器、执行命令、传输文件等操作。

步骤1:安装必要库

首先安装 robotframework-sshlibrary

pip install robotframework-sshlibrary

步骤2:编写SSH登录测试用例

以下是一个通过RF连接SSH服务器并执行简单命令的示例(假设测试目标是登录到某台Linux服务器):

*** Settings ***
# 导入SSH测试库
Library           SSHLibrary
# 测试套件初始化和清理
Suite Setup       初始化SSH连接
Suite Teardown    关闭SSH连接
Test Timeout      60

*** Variables ***
# 定义SSH服务器信息(替换为实际服务器的IP、账号密码)
${SSH_HOST}       192.168.1.100    # 服务器IP或主机名
${SSH_PORT}       22               # SSH默认端口
${SSH_USER}       admin            # 登录用户名
${SSH_PASS}       admin123         # 登录密码
${TIMEOUT}        10               # 操作超时时间(秒)

*** Test Cases ***
# 测试用例1:SSH登录并执行命令
SSH登录及命令执行测试
    [Documentation]    验证SSH登录成功并执行简单命令
    执行命令并验证    hostname    # 执行查看主机名命令
    执行命令并验证    whoami      # 执行查看当前用户命令
    执行命令并验证    pwd         # 执行查看当前路径命令

# 测试用例2:错误密码登录(负面测试)
错误密码登录验证
    [Documentation]    验证使用错误密码无法登录
    [Setup]    关闭SSH连接    # 先关闭已有的连接
    Run Keyword And Expect Error    *Authentication failed*    尝试登录    ${SSH_USER}    wrong_password
    Log    错误密码登录验证通过

*** Keywords ***
# 关键字1:初始化SSH连接
初始化SSH连接
    Open Connection    ${SSH_HOST}:${SSH_PORT}    timeout=${TIMEOUT}    # 打开SSH连接
    Login    ${SSH_USER}    ${SSH_PASS}                                # 使用账号密码登录
    Log    SSH连接已建立并登录成功

# 关键字2:关闭SSH连接
关闭SSH连接
    Close All Connections    # 关闭所有SSH连接
    Log    SSH连接已关闭

# 关键字3:执行命令并验证(简化版,实际可根据需求扩展)
执行命令并验证
    [Arguments]    ${command}
    ${result} =    Execute Command    ${command}    return_stdout=True    # 执行命令并返回输出
    Should Not Be Empty    ${result}    # 验证命令有输出(非空)
    Log    命令[${command}]执行成功,输出:${result}

# 关键字4:尝试登录(用于负面测试)
尝试登录
    [Arguments]    ${user}    ${pass}
    Open Connection    ${SSH_HOST}:${SSH_PORT}    timeout=${TIMEOUT}
    Login    ${user}    ${pass}

步骤3、关键说明

  1. 核心关键字解析

    • Open Connection:建立与SSH服务器的连接(需指定主机和端口)。
    • Login:使用用户名和密码登录(支持密钥登录,见下方扩展)。
    • Execute Command:在远程服务器上执行命令,return_stdout=True 表示返回命令输出结果。
    • Close All Connections:关闭所有SSH连接,释放资源。
  2. 元素定位方式
    测试用例中通过变量 ${SSH_HOST} ${SSH_USER} 等存储服务器信息,便于统一维护和修改。

  3. 密钥登录支持
    如果服务器需要密钥认证,可替换 Login 关键字为 Login With Public Key

    Login With Public Key    ${SSH_USER}    /path/to/private_key    passphrase=${KEY_PASSWORD}
    

    其中 private_key 是本地私钥文件路径,passphrase 是私钥密码(如无密码可省略)。

  4. 错误处理
    负面测试中使用 Run Keyword And Expect Error 关键字,验证错误密码登录时是否抛出预期的“认证失败”错误。

步骤4、执行测试

在命令行中运行测试用例:

robot ssh_login_test.robot

执行后会生成测试报告(report.html)和日志(log.html),可查看登录过程和命令执行结果。

步骤5、注意事项

  • 替换变量中的服务器IP、账号密码为实际环境信息,确保网络可访问目标服务器的22端口。
  • 对于长时间运行的命令,可通过 timeout 参数设置超时时间(如 Execute Command ${command} timeout=30)。
  • 敏感信息(如密码)可存储在外部文件(如加密的变量文件)中,避免明文暴露。

通过 SSHLibrary,RF可以轻松实现SSH登录、命令执行、文件传输(Get File/Put File)等操作,适用于服务器自动化运维或远程命令测试场景。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐