Robot Framework 的常用关键字集中在 BuiltIn、Collections、String、DateTime、SeleniumLibrary、RequestsLibrary 等库中,日常 80% 的场景只需掌握以下 6 类高频关键字:
1、日志与流程
Log / Log To Console / Comment / Fail / Sleep
用于调试输出、强制报错、等待。
Set Variable / ${x}= 1 2 3 创建列表/字典
Should Be Equal / Should Contain / Run Keyword If
完成断言、分支、循环控制。
Append To List / Remove From Dictionary / Get Dictionary Keys
快速增删改查列表和字典。
Get Substring / Replace String / Split String / Convert To Upper Case
无需写 Python 即可处理文本。
Open Browser / Click Element / Input Text / Get Text / Page Should Contain
一行关键字完成打开浏览器、点击、输入、断言。
Create Session / Get / Post / Should Be Equal As Strings / Status Should Be
通过会话对象完成 REST 接口调用及校验。
掌握以上关键字即可覆盖日志、变量、断言、集合、字符串、Web、接口 7 大核心场景。
常用关键字使用
1. 基本日志
2. 字符串常用关键字
3. 列表操作
4. 字典操作
5. 类型转换
6. 随机数与范围
7. 时间关键字
8. 条件判断
9. 断言关键字(失败会终止用例)
10. 运行系统命令并获取输出
11. 创建目录/文件(OperatingSystem)
实例
*** Settings ***Documentation Robot Framework 常用关键字速查 DemoLibrary Collections # 列表/字典操作Library String # 字符串处理Library DateTime # 时间Library OperatingSystem # 文件/目录Library BuiltIn # 内建关键字(变量/断言/循环/随机数等)Library random*** Variables ***${STR} Hello Robot # 字符串变量@{LIST} apple banana cherry # 列表变量&{DICT} name=Tom age=18 city=Beijing # 字典变量*** Test Cases ***Demo_Keyword_CheatSheet[Tags] key1# 1. 基本日志Log To Console \n=== 1. 基本日志 ===Log 这是一条普通日志Log Many ${STR} ${LIST} ${DICT}# 2. 字符串常用关键字Log To Console \n=== 2. 字符串常用关键字 ===${upper}= Convert To Uppercase ${STR}${len}= Get Length ${STR}${sub}= Get Substring ${STR} 0 5Log Many 转大写:${upper} 长度:${len} 子串:${sub}# 创建字典、列表、设置变量${a} Set Variable 100Comment 使用Log ${a}Sleep 3Import Library C:/Users/wm/Desktop/cs/1024/cs.py${return_result} sum1 10 20Log Many ${return_result}${data1} Create Dictionary key=value${data2} Create List 1 2 love you!comment ${data2}${data3} Catenate This is a nice day! ${data2}comment ${data2}# 3. 列表操作Log To Console \n=== 3. 列表操作 ===# 取索引 0${first}= Get From List ${LIST} 0# 取最后一个${last}= Get From List ${LIST} -1# 切片${slice}= Get Slice From List ${LIST} 0 2Comment ${slice}=Log Many 第一个:${first} 最后一个:${last} 切片:${slice}# 列表遍历Log To Console 列表遍历:FOR ${item} IN @{LIST}Log To Console 当前水果: ${item}END# 向列表追加/删除Append To List ${LIST} orangeRemove From List ${LIST} 1Log 追加+删除后的列表: ${LIST}# 4. 字典操作Log To Console \n=== 4. 字典操作 ===${v}= Get From Dictionary ${DICT} nameLog 根据 key='name' 得到 value: ${v}# 遍历字典Log To Console 字典遍历:FOR ${k} ${v} IN &{DICT}Log To Console ${k} -> ${v}END# 新增/修改 key-valueSet To Dictionary ${DICT} email=tom@example.comLog 新增 email 后的字典: ${DICT}# 5. 类型转换Log To Console \n=== 5. 类型转换 ===${int} Convert To Integer 42${float} Convert To Number 3.14${str2} Convert To String ${int}Log Many int:${int} float:${float} str:${str2}# 6. 随机数与范围Log To Console \n=== 6. 随机数与范围 ===${rand} Generate Random String 8 [LOWER]${num} Evaluate random.randint(1, 100) modules=randomLog Many 随机字符串:${rand} 随机数字:${num}# 7. 时间关键字${start} Get Time epochSleep 2 # 这里放你的业务关键字${end} Get Time epoch${elapsed} Evaluate ${end} - ${start}Log 耗时 ${elapsed} 秒# 8. 条件判断Log To Console \n=== 8. 条件判断 ===${age} Set Variable 20IF ${age} >= 18Log To Console 成年人ELSELog To Console 未成年人END# 9. 断言关键字(失败会终止用例)Log To Console \n=== 9. 断言关键字 ===Should Be Equal As Integers ${age} 20Should Contain ${STR} RobotDictionary Should Contain Key ${DICT} city# 10. 运行系统命令并获取输出Log To Console \n=== 10. 运行系统命令 ===${rc} ${output}= Run And Return Rc And Output echo Hello from OSLog many 命令返回码:${rc} 输出:${output}# 11. 创建目录/文件(OperatingSystem)Log To Console \n=== 11. 文件系统操作 ===${dir} Join Path ${OUTPUTDIR} demo_dirCreate Directory ${dir}Create File ${dir}/example.txt 这是文件内容${files} List Files In Directory ${dir}Log 目录${dir} 下的文件: ${files}
message log
Starting test: 0814-2.Suite1.Demo_Keyword_CheatSheet20250817 17:02:21.622 : INFO : 这是一条普通日志20250817 17:02:21.626 : INFO : Hello Robot20250817 17:02:21.626 : INFO :20250817 17:02:21.627 : INFO : {'name': 'Tom', 'age': '18', 'city': 'Beijing'}20250817 17:02:21.629 : INFO : ${upper} = HELLO ROBOT20250817 17:02:21.630 : INFO : Length is 11.20250817 17:02:21.631 : INFO : ${len} = 1120250817 17:02:21.632 : INFO : ${sub} = Hello20250817 17:02:21.634 : INFO : 转大写:HELLO ROBOT20250817 17:02:21.634 : INFO : 长度:1120250817 17:02:21.634 : INFO : 子串:Hello20250817 17:02:21.636 : INFO : ${a} = 10020250817 17:02:21.638 : INFO : 10020250817 17:02:24.640 : INFO : Slept 3 seconds.20250817 17:02:27.812 : INFO : ${return_result} = 10201020250817 17:02:27.813 : INFO : 10201020250817 17:02:27.814 : INFO : ${data1} = {'key': 'value'}20250817 17:02:27.815 : INFO : ${data2} =20250817 17:02:27.818 : INFO : ${data3} = This is a nice day!20250817 17:02:27.821 : INFO : ${first} = apple20250817 17:02:27.822 : INFO : ${last} = cherry20250817 17:02:27.824 : INFO : ${slice} =20250817 17:02:27.826 : INFO : 第一个:apple20250817 17:02:27.826 : INFO : 最后一个:cherry20250817 17:02:27.827 : INFO : 切片:['apple', 'banana']20250817 17:02:27.833 : INFO : 追加+删除后的列表:20250817 17:02:27.838 : INFO : ${v} = Tom20250817 17:02:27.840 : INFO : 根据 key='name' 得到 value: Tom20250817 17:02:27.849 : INFO : 新增 email 后的字典: {'name': 'Tom', 'age': '18', 'city': 'Beijing', 'email': 'tom@example.com'}20250817 17:02:27.852 : INFO : ${int} = 4220250817 17:02:27.854 : INFO : ${float} = 3.1420250817 17:02:27.855 : INFO : ${str2} = 4220250817 17:02:27.857 : INFO : int:4220250817 17:02:27.857 : INFO : float:3.1420250817 17:02:27.857 : INFO : str:4220250817 17:02:27.859 : INFO : ${rand} = bmofenbl20250817 17:02:27.861 : INFO : ${num} = 820250817 17:02:27.863 : INFO : 随机字符串:bmofenbl20250817 17:02:27.863 : INFO : 随机数字:820250817 17:02:27.865 : INFO : ${start} = 175542134720250817 17:02:29.867 : INFO : Slept 2 seconds.20250817 17:02:29.874 : INFO : ${end} = 175542134920250817 17:02:29.877 : INFO : ${elapsed} = 220250817 17:02:29.879 : INFO : 耗时 2 秒20250817 17:02:29.887 : INFO : ${age} = 2020250817 17:02:29.931 : INFO : Running command 'echo Hello from OS 2>&1'.20250817 17:02:29.943 : INFO : ${rc} = 020250817 17:02:29.943 : INFO : ${output} = Hello from OS20250817 17:02:29.944 : INFO : 命令返回码:020250817 17:02:29.944 : INFO : 输出:Hello from OS20250817 17:02:29.946 : INFO : ${dir} = C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir20250817 17:02:29.947 : INFO : Directory '<a href="file://C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir">C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir</a>' already exists.20250817 17:02:29.949 : INFO : Created file '<a href="file://C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir\example.txt">C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir\example.txt</a>'.20250817 17:02:29.951 : INFO : Listing contents of directory '<a href="file://C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir">C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir</a>'.20250817 17:02:29.953 : INFO :1 file:example.txt20250817 17:02:29.954 : INFO : ${files} =20250817 17:02:29.955 : INFO : 目录C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir 下的文件:Ending test: 0814-2.Suite1.Demo_Keyword_CheatSheetStarting test: 0814-2.Suite2.Demo_Keyword_CheatSheet20250817 17:02:29.973 : INFO : 这是一条普通日志20250817 17:02:29.975 : INFO : Hello Robot20250817 17:02:29.976 : INFO :20250817 17:02:29.976 : INFO : {'name': 'Tom', 'age': '18', 'city': 'Beijing'}20250817 17:02:29.977 : INFO : ${upper} = HELLO ROBOT20250817 17:02:29.978 : INFO : Length is 11.20250817 17:02:29.979 : INFO : ${len} = 1120250817 17:02:29.981 : INFO : ${sub} = Hello20250817 17:02:29.983 : INFO : 转大写:HELLO ROBOT20250817 17:02:29.984 : INFO : 长度:1120250817 17:02:29.985 : INFO : 子串:Hello20250817 17:02:29.987 : INFO : ${first} = apple20250817 17:02:29.989 : INFO : ${last} = cherry20250817 17:02:29.990 : INFO : ${slice} =20250817 17:02:29.991 : INFO : 第一个:apple20250817 17:02:29.991 : INFO : 最后一个:cherry20250817 17:02:29.992 : INFO : 切片:['apple', 'banana']20250817 17:02:30.004 : INFO : 追加+删除后的列表:20250817 17:02:30.006 : INFO : ${v} = Tom20250817 17:02:30.007 : INFO : 根据 key='name' 得到 value: Tom20250817 17:02:30.019 : INFO : 新增 email 后的字典: {'name': 'Tom', 'age': '18', 'city': 'Beijing', 'email': 'tom@example.com'}20250817 17:02:30.022 : INFO : ${int} = 4220250817 17:02:30.023 : INFO : ${float} = 3.1420250817 17:02:30.024 : INFO : ${str2} = 4220250817 17:02:30.025 : INFO : int:4220250817 17:02:30.026 : INFO : float:3.1420250817 17:02:30.026 : INFO : str:4220250817 17:02:30.028 : INFO : ${rand} = prwkqeiu20250817 17:02:30.030 : INFO : ${num} = 6920250817 17:02:30.031 : INFO : 随机字符串:prwkqeiu20250817 17:02:30.031 : INFO : 随机数字:6920250817 17:02:30.035 : INFO : ${start} = 175542135020250817 17:02:32.038 : INFO : Slept 2 seconds.20250817 17:02:32.039 : INFO : ${end} = 175542135220250817 17:02:32.040 : INFO : ${elapsed} = 220250817 17:02:32.041 : INFO : 耗时 2 秒20250817 17:02:32.046 : INFO : ${age} = 2020250817 17:02:32.064 : INFO : Running command 'echo Hello from OS 2>&1'.20250817 17:02:32.087 : INFO : ${rc} = 020250817 17:02:32.087 : INFO : ${output} = Hello from OS20250817 17:02:32.088 : INFO : 命令返回码:020250817 17:02:32.088 : INFO : 输出:Hello from OS20250817 17:02:32.090 : INFO : ${dir} = C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir20250817 17:02:32.091 : INFO : Directory '<a href="file://C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir">C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir</a>' already exists.20250817 17:02:32.093 : INFO : Created file '<a href="file://C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir\example.txt">C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir\example.txt</a>'.20250817 17:02:32.094 : INFO : Listing contents of directory '<a href="file://C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir">C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir</a>'.20250817 17:02:32.095 : INFO :1 file:example.txt20250817 17:02:32.095 : INFO : ${files} =20250817 17:02:32.096 : INFO : 目录C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\demo_dir 下的文件:Ending test: 0814-2.Suite2.Demo_Keyword_CheatSheet
console log
command: robot -A C:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\argfile.txt --listener D:\soft\python311\Lib\site-packages\robotide\contrib\testrunner\TestRunnerAgent.py:4642:False C:\Users\wm\test0630\0814-2TestRunnerAgent: Running under CPython 3.11.5===============================================================================================0814-2===============================================================================================0814-2.Suite1 :: Robot Framework 常用关键字速查 Demo===============================================================================================Demo_Keyword_CheatSheet=== 1. 基本日志 ====== 2. 字符串常用关键字 ====== 3. 列表操作 ===列表遍历:当前水果: apple当前水果: banana当前水果: cherry=== 4. 字典操作 ===字典遍历:name -> Tomage -> 18city -> Beijing=== 5. 类型转换 ====== 6. 随机数与范围 ====== 8. 条件判断 ===成年人=== 9. 断言关键字 ====== 10. 运行系统命令 ====== 11. 文件系统操作 ===| PASS |-----------------------------------------------------------------------------------------------0814-2.Suite1 :: Robot Framework 常用关键字速查 Demo | PASS |1 test, 1 passed, 0 failed===============================================================================================0814-2.Suite2 :: Robot Framework 常用关键字速查 Demo===============================================================================================Demo_Keyword_CheatSheet=== 1. 基本日志 ====== 2. 字符串常用关键字 ====== 3. 列表操作 ===列表遍历:当前水果: apple当前水果: banana当前水果: cherry=== 4. 字典操作 ===字典遍历:name -> Tomage -> 18city -> Beijing=== 5. 类型转换 ====== 6. 随机数与范围 ====== 8. 条件判断 ===成年人=== 9. 断言关键字 ====== 10. 运行系统命令 ====== 11. 文件系统操作 ===| PASS |-----------------------------------------------------------------------------------------------0814-2.Suite2 :: Robot Framework 常用关键字速查 Demo | PASS |1 test, 1 passed, 0 failed===============================================================================================0814-2 | PASS |2 tests, 2 passed, 0 failed===============================================================================================Output: file:///C:/Users/wm/AppData/Local/Temp/RIDEvinp7x2i.d/output.xmlC:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\output.xmlLog: file:///C:/Users/wm/AppData/Local/Temp/RIDEvinp7x2i.d/log.htmlC:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\log.htmlReport: file:///C:/Users/wm/AppData/Local/Temp/RIDEvinp7x2i.d/report.htmlC:\Users\wm\AppData\Local\Temp\RIDEvinp7x2i.d\report.htmlTest finished 20250817 17:02:33

