我在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
。
我该怎么写?
答案 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 Succeeds
和SeleniumLibrary'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}