机器人框架中等待条件的参数过多?

时间:2018-11-29 18:55:02

标签: conditional conditional-statements robotframework

我在Robot Framework中有以下一行

Wait for condition  'Get element attribute  id:something  attribute=something_else'  ==  'abc'

我认为这很容易解释:我想等到Get element attribute返回abc

但是,这将返回错误消息

Wait for condition expected 1 to 3 arguments, got 5.

从抽象的角度来看,此错误消息非常清晰,但我不明白它在这里的应用方式。它所引用的五个参数不是Wait for condition而是Get element attribute.的参数,我想向Wait for condition发送两个相等的参数,即Get element attribute的返回值和字符串abc

我该怎么写?

2 个答案:

答案 0 :(得分:3)

这不是public interface DeviceRepository extends CrudRepository<Device, Long> { List<Device> findBySiteAndType(Site site, String type); } 的工作方式。您不能给它一个关键字。您必须给它一个JavaScript表达式。

从文档中:

  

条件可以是任意JavaScript表达式,但必须返回一个要求值的值。有关访问页面内容的信息,请参见执行JavaScript。

答案 1 :(得分:2)

在另一个答案中,正确地指出了Wait For Condition关键字仅用于在浏览器中运行的js代码。使用builtin keyword Wait Until Keyword SucceedsSeleniumLibrary's Element Attribute Value Should Be的方法如下:

Wait Until Keyword Succeeds    retry=1 minute    retry_interval=5 seconds    Element Attribute Value Should Be    id:something  attribute=something_else    expected=abc

Element Attribute Value Should Be是Selenium Library v3.2中的新功能,如果您尚未安装此版本,请参考以下示例实现:

Attribute Value Should Be
    [Documentation]    Fails if the element's attribute is not the expected one
    [Arguments]    ${locator}    ${attribute}    ${expected}

    ${value}=    Get Element Attribute    ${locator}    ${attribute}
    Run Keyword If    """${value}""" != """${expected}"""
    ...     Fail    The attribute's value is different from the expected: ${value} != ${expected}