简介

Robot Framework有时候会用到等待用户输入,但是Robot Framework本身是没有ui弹窗窗口的,但是我们可以利用python定义函数并注册成Robot Framework关键字,然后导入Robot Framework里面使用。

本文章代码基于上一篇文章《Robot Framework编写第一个web自动化小脚本

定义函数

新建文件夹

新建一个文件,用于存储弹窗文件

选中项目文件夹,然后点击右上角的新建文件夹图标

1.png

输入文件夹名称,然后回车确定

2.png

新建python文件

选中刚刚新建的文件夹,点击右上角的新建文件图标

3.png

输入文件名,python文件是.py的后缀名,输入完成后回车确定

4.png

编辑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

5.png

如果需要多个弹窗的话,把上面代码改一下即可,例如我需要两个弹窗,代码就改成下面这个

# 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)

6.png

调用弹窗

导入py文件

返回测试用例层,打开我们的测试用例文件

7.png

导入我们编写的py文件

Library    ../交互弹窗层/input_windows.py

8.png

调用弹窗

在我们需要弹出弹窗的地方新建一个变量,并且把对应py文件里面的弹窗关键字赋值给变量,例如我需要在脚本开始运行前就弹出弹窗让用户输入不固定的内容,那么我在Test Cases部分的用例名称下面就新建变量并赋值关键字给变量,然后在需要我们输入的地方调用新建的变量

9.png

这里我只使用了一个弹窗,第二个弹窗一样的,新建变量然后赋值关键字给变量,在需要的地方调用变量

10.png

这样两个弹窗都调用完成了

测试

第一个弹窗

11.png

第二个弹窗

12.png

测试结果

13.png

二维码

发表评论