我使用最新的Robot Framework。我需要根据参数的值给变量赋值。在JavaScript中就是这样的:
ITEM_SELECTOR = RECENT_ITEM_SELECTOR + (
position === 'last' ? ':last-child' : ':nth-child' + '(' + position + ')'
)
在Robot Framework中我是这样写的:
${ITEM_SELECTOR} = Run Keyword If ${position} == 'last' ${RECENT_ITEM_SELECTOR}:last-child
... ELSE ${RECENT_ITEM_SELECTOR}:nth-child(${position})
但这样${RECENT_ITEM_SELECTOR}:nth-child(${position})
被认为是关键字,而不是分配给ITEM_SELECTOR
。
然后我尝试用No Operation
来预准备它,但然后我的返回值被认为是它的参数,我得到Keyword 'BuiltIn.No Operation' expected 0 arguments, got 1.
我怎么写呢?
既然你正在调用运行关键字if,你必须给它一个关键字来运行。你可以使用set variable来使你的代码工作:
${ITEM_SELECTOR} = Run Keyword If ${position} == 'last'
... Set variable ${RECENT_ITEM_SELECTOR}:last-child
... ELSE
... Set variable ${RECENT_ITEM_SELECTOR}:nth-child(${position})
但是,您也可以使用set variable if来获得稍微紧凑和可读的解决方案:
${ITEM_SELECTOR} = Set variable if ${position} == 'last'
... ${RECENT_ITEM_SELECTOR}:last-child
... ${RECENT_ITEM_SELECTOR}:nth-child(${position})