Robotframework-使用Run Keyword If/ELSE时出错



我正在努力使用Selenium在robotframework中创建一个测试用例。基本上,我的目标是使用一些xpath查询在FOR循环中捕获一些web元素,检查页面上是否存在实际的web元素,以防下一步不通过。我创建了以下脚本:

*** Test Cases ***
FOR     ${href}     IN      @{hrefs}
Log     ${href}
${pl}=       Run Keyword And Continue On Failure    Get Element Count        xpath://a[contains(@href,'test')]
${photo_link}=    Run Keyword If    ${pl}> 0 Get WebElement    xpath://a[contains(@href,'test')]
${test_a}=    Set Variable    ${photo_link.get_attribute('innerHTML')}
ELSE
${test_a}=  do something else
END
Close All Browsers

但我总是会出错:

'Else' is a reserved keyword. It must be in uppercase (ELSE) when used as a marker with 'Run Keyword If'.

检查文档时,我找不到任何解决方案。我用错语法了吗?是否有一些可供选择的方式来避免和跳过";获取WebElements"没有火柴?谢谢

有几个语法错误,框架解析器为其中一个抛出异常-当这个错误修复后,您会看到另一个。从";隐藏错误",在这篇文章中:

Run Keyword If    ${pl}> 0 Get WebElement

,条件${pl}>0和为true时的操作(Get-Webelements(之间没有分隔符(2个或更多空格(。应该是

Run Keyword If    ${pl}> 0    Get WebElement

您看到的错误是由于使用了保留关键字ELSE;一般来说,它用于规定条件为false时的操作,并且是对Run Keyword If调用的一部分,例如,它应该写成:

Run Keyword If     condition    Action If True    ELSE    Action If False

或者像这样-有3个点,用于继续-当写在多行上时:

Run Keyword If     condition    Action If True    
...    ELSE    Action If False

你缺少";"延续">(我当场编造的一个术语,不要引用我的话:(,用户指南使用了其他东西(-这是一个独立的&独立线,从而产生误差。


为了修复它,您最好使用框架版本4中引入的新IF/ELSE块;它看起来像:

IF    ${pl}> 0
${photo_link}=    Get WebElement    xpath://a[contains(@href,'test')]
${test_a}=    Set Variable     ${photo_link.get_attribute('innerHTML')}
ELSE
${test_a}=    do something else
END

它看起来与您的代码几乎相同,但没有使用Run Keyword If。在RF v3.x中,通过使用关键字,您必须使用Run Keywords才能在真正的blcok中使用多个关键字,并且-您不能在Run Keywords中进行变量赋值。你想实现的目标可以在那里完成,流程略有不同,看起来会有点尴尬,但新的IF/ELSE语法是你最安全的选择。

最新更新