Robot Framework:使用 if-else 语句分配变量

Robot Framework: assign variable with if-else statement

我使用最新的机器人框架。 我需要根据参数的值为我的变量赋值。在 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 预先添加它,但随后我的 return 值被认为是它的参数,我得到 Keyword 'BuiltIn.No Operation' expected 0 arguments, got 1.

怎么写?

由于您正在调用 run keyword if, you have to give it a keyword to run. You can use 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})