IF ELSE in robot framework with variables assignment(带有变量分配的机器人框架中的 IF ELSE)
问题描述
我需要在机器人框架中有条件地执行一些关键字,但我不知道该怎么做,它不起作用.我尝试了很多选项,但我想我的IF-ELSE"语句完全错误..
I need to execute some keywords conditionally in robot framework, but I dont know how to do it, it does not work. I tried many options, but I guess I have the "IF-ELSE" statement completely wrong..
Choose Particular Filter ${FILTER} And Uncheck All Values
${bool}= is filter opened ${AVAILABLE FILTERS} ${FILTER}
${uncheck_all_button}= run keyword if "${bool}" == "True" uncheck all in filter ${AVAILABLE FILTERS} ${FILTER}
... click element ${uncheck_all_button}
... ELSE
... Set variable ${particular_filter}: find particular filter ${AVAILABLE FILTERS} ${FILTER}
... click element ${particular_filter}
... Set variable ${uncheck_all_button}: uncheck all in filter ${AVAILABLE FILTERS} ${FILTER}
... click element ${uncheck_all_button}
它失败了:Variable '${particular_filter}' not found.但是如果我运行它,它甚至不应该去 ELSE 分支,因为 ${bool} 是 True...我的自定义函数 is filter opens 只是检查过滤器是否已经打开 - 如果是,则返回 True.我的自定义函数 uncheck all in filter 只返回uncheck all"按钮的 XPATH.我的自定义函数 find specific filter 返回filter dropdown"按钮的 XPATH.在这整个关键字中,我需要检查过滤器下拉菜单是否已经打开 - 如果是,那么我必须直接点击 ${uncheck_all_button},否则如果过滤器下拉菜单尚未打开,我需要首先点击过滤器本身 ${particular_filter} 然后我可以点击 ${uncheck_all_button}
It fails with: Variable '${particular_filter}' not found.
But in case I run it it should not even go to ELSE branch because ${bool} is True...
My custom function is filter opened just checks whether filter is already opened - if so, returns True.
My custom function uncheck all in filter just returns XPATH of "uncheck all" button.
My custom function find particular filter returns XPATH of "filter dropdown" button.
In this whole keyword I need to check whether the filter dropdown is already opened - if so, then I have to click directly on ${uncheck_all_button}, else if the filter dropdown is not opened yet, I need to first click on the filter itself ${particular_filter} and after that I can click on ${uncheck_all_button}
我还尝试了运行关键字"这一行:
I also tried the "run keyword" line to have like this:
${uncheck_all_button}= run keyword if "${bool}" == "True" Set Variable uncheck all in filter ${AVAILABLE FILTERS} ${FILTER}
或者这个:
run keyword if "${bool}" == "True" ${uncheck_all_button}= uncheck all in filter ${AVAILABLE FILTERS} ${FILTER}
我也试过 ${bool} == "True" 和 ${bool} == True
但没有什么真正起作用,仍然是同样的错误:(
But nothing really works, still the same error :(
非常感谢您的帮助!
推荐答案
在每个块中使用带有多个语句的 IF/THEN/ELSE 在 Robot 中不起作用(或者我想您将不得不使用运行关键字",但是将变得不可读).所以我会用这种方式重构你的代码:
Having IF/THEN/ELSE with multiple statements in each block does not work in Robot (or you would have to use "Run Keywords" I suppose, but that would become unreadable). So I would refactor your code this way:
Choose Particular Filter ${FILTER} And Uncheck All Values
${is_filter_opened}= is filter opened ${AVAILABLE FILTERS} ${FILTER}
run keyword if ${is_filter_opened} actions_when_unchecked
... ELSE actions_when_checked
actions_when_unchecked
uncheck all in filter ${AVAILABLE FILTERS} ${FILTER}
click element ${uncheck_all_button}
actions_when_checked
${particular_filter}: find particular filter ${AVAILABLE FILTERS} ${FILTER}
click element ${particular_filter}
${uncheck_all_button}: uncheck all in filter ${AVAILABLE FILTERS} ${FILTER}
click element ${uncheck_all_button}
希望这会有所帮助.
这篇关于带有变量分配的机器人框架中的 IF ELSE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:带有变量分配的机器人框架中的 IF ELSE
基础教程推荐
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 包装空间模型 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 求两个直方图的卷积 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
