Robot Framework中是否有关键字以确保元素具有某个类?像
这样的东西 Element should has class element className
或者,我可以检查元素是否具有特定值的特定属性。虽然前者更合适,因为元素可能包含多个类。
答案 0 :(得分:5)
您可以通过XPath选择器创建一个新关键字:
Element should have class
[Arguments] ${element} ${className}
Wait until page contains element ${element}[contains(@class, '${className}')]
或通过CSS选择器:
Element should have class
[Arguments] ${element} ${className}
Wait until page contains element ${element}.${className}
Wait until page contains element
可以替换为您喜欢的任何关键字,以检查该元素是否存在且可见,例如Element should be visible
。
答案 1 :(得分:3)
这是一个替代解决方案(虽然接受的答案的CSS非常好),适用于任何类型的选择器策略:
Element should have class
[Arguments] ${locator} ${target value}
${class}= Get Element Attribute ${locator}@class
Should Contain ${class} ${target value}
可以针对任何其他属性进行修改 - 只需用@class
中的Get Element Attribute
替换它(或者甚至将其作为可选参数)。
答案 2 :(得分:1)
此页面上的某些解决方案可能会遇到子字符串匹配问题。即使类属性(例如test-run
)应该失败,也可以通过检查,该类属性(例如test
)是否包含类(例如Element Should Have Class
[Arguments] ${locator} ${class}
${escaped}= Regexp Escape ${class}
${classes}= Get Element Attribute ${locator} class
Should Match Regexp ${classes} \\b${escaped}\\b
Element Should Not Have Class
[Arguments] ${locator} ${class}
${escaped}= Regexp Escape ${class}
${classes}= Get Element Attribute ${locator} class
Should Not Match Regexp ${classes} \\b${escaped}\\b
)。
有几种方法可以解决这个问题,但是最后,我做了以下事情:
@RolesAllowed("role_name")
答案 3 :(得分:0)
下面是两种方式的示例:
${temp}= get element attribute xpath=/elementpath class
should contain ${temp} ${ClassName}
OR
Wait until page contains element xpath=/elementpath[contains(@class, '${ClassName}')