简介
Robot Framework有时候会用到等待用户输入,但是Robot Framework本身是没有ui弹窗窗口的,但是我们可以利用python定义函数并注册成Robot Framework关键字,然后导入Robot Framework里面使用。
本文章代码基于上一篇文章《Robot Framework编写第一个web自动化小脚本》
定义函数
新建文件夹
新建一个文件,用于存储弹窗文件
选中项目文件夹,然后点击右上角的新建文件夹图标
输入文件夹名称,然后回车确定
新建python文件
选中刚刚新建的文件夹,点击右上角的新建文件图标
输入文件名,python文件是.py的后缀名,输入完成后回车确定
编辑py文件
把下面代码复制到新建的py文件中并保存
# input_windows.py
from tkinter import Tk, simpledialog
from robot.api.deco import keyword
@keyword("Get Input From Popup")
def get_input_from_popup(prompt="请输入内容"):
return _show_input_popup(prompt)
# 公共弹窗逻辑
def _show_input_popup(prompt):
root = Tk()
root.withdraw()
user_input = simpledialog.askstring("输入提示", prompt)
root.destroy()
return user_input
下面是这段代码的解释
# 导入 tkinter 库中的 Tk 和 simpledialog,用于图形界面弹窗
from tkinter import Tk, simpledialog
# 导入 Robot Framework 的装饰器,用于将 Python 函数注册为关键字
from robot.api.deco import keyword
# 使用 @keyword 装饰器,将该函数注册为 Robot Framework 的关键字 "Get Input From Popup"
@keyword("Get Input From Popup")
def get_input_from_popup(prompt="请输入内容"):
# 调用内部的通用弹窗函数 _show_input_popup,并传入提示信息
return _show_input_popup(prompt)
# 定义一个私有的辅助函数,用于显示输入弹窗并返回用户输入的内容
def _show_input_popup(prompt):
# 创建一个 tkinter 主窗口对象(但不会显示它)
root = Tk()
# 隐藏主窗口,只显示弹出的输入对话框
root.withdraw()
# 弹出一个字符串输入对话框,标题是“输入提示”,提示内容为传入的 prompt
# 如果用户点击“确定”,返回输入的字符串;如果点击“取消”,返回 None
user_input = simpledialog.askstring("输入提示", prompt)
# 用户输入后销毁主窗口,释放资源
root.destroy()
# 返回用户输入的内容
return user_input
如果需要多个弹窗的话,把上面代码改一下即可,例如我需要两个弹窗,代码就改成下面这个
# input_windows.py
from tkinter import Tk, simpledialog
from robot.api.deco import keyword
@keyword("Get Input From Popup")
def get_input_from_popup(prompt="请输入内容"):
return _show_input_popup(prompt)
@keyword("Get Input From Popup1")
def get_input_from_popup1(prompt="请输入内容"):
return _show_input_popup(prompt)
# 公共弹窗逻辑
def _show_input_popup(prompt):
root = Tk()
root.withdraw()
user_input = simpledialog.askstring("输入提示", prompt)
root.destroy()
return user_input
就是把下面这段复制粘贴,然后修改@keyword后面的关键字,让他不要和上面的重复,在继续把def后面的也改了,也不能重复,这样就可以调动多个输入窗口了,想要几个就复制粘贴几个。
@keyword("Get Input From Popup") #修改Get Input From Popup不能与已经有的重复
def get_input_from_popup(prompt="请输入内容"): #修改get_input_from_popup不能与已经有的重复
return _show_input_popup(prompt)
调用弹窗
导入py文件
返回测试用例层,打开我们的测试用例文件
导入我们编写的py文件
Library ../交互弹窗层/input_windows.py
调用弹窗
在我们需要弹出弹窗的地方新建一个变量,并且把对应py文件里面的弹窗关键字赋值给变量,例如我需要在脚本开始运行前就弹出弹窗让用户输入不固定的内容,那么我在Test Cases部分的用例名称下面就新建变量并赋值关键字给变量,然后在需要我们输入的地方调用新建的变量
这里我只使用了一个弹窗,第二个弹窗一样的,新建变量然后赋值关键字给变量,在需要的地方调用变量
这样两个弹窗都调用完成了
测试
第一个弹窗
第二个弹窗
测试结果