机器人框架,如何检查class
Robot framework, how to check class
Robot Framework 中是否有关键字来确保元素具有一定的class?像
Element should has class element className
或者,我可以检查元素是否具有具有特定值的特定属性。不过,前者会更合适,因为元素可能包含多个 classes.
您可以通过 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
.
这是一个替代解决方案(虽然已接受的答案 CSS 非常好),适用于任何类型的选择器策略:
Element should have class
[Arguments] ${locator} ${target value}
${class}= Get Element Attribute ${locator}@class
Should Contain ${class} ${target value}
它可以针对任何其他属性进行修改 - 只需将 Get Element Attribute
中的 @class
替换为它(或者甚至将其设为可选参数)。
下面是两种方式的示例:
${temp}= get element attribute xpath=/elementpath class
should contain ${temp} ${ClassName}
或
Wait until page contains element xpath=/elementpath[contains(@class, '${ClassName}')
此页面上的某些解决方案可能会遇到子字符串匹配问题。检查 class 属性(例如 test-run
)是否包含 class(例如 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
Robot Framework 中是否有关键字来确保元素具有一定的class?像
Element should has class element className
或者,我可以检查元素是否具有具有特定值的特定属性。不过,前者会更合适,因为元素可能包含多个 classes.
您可以通过 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
.
这是一个替代解决方案(虽然已接受的答案 CSS 非常好),适用于任何类型的选择器策略:
Element should have class
[Arguments] ${locator} ${target value}
${class}= Get Element Attribute ${locator}@class
Should Contain ${class} ${target value}
它可以针对任何其他属性进行修改 - 只需将 Get Element Attribute
中的 @class
替换为它(或者甚至将其设为可选参数)。
下面是两种方式的示例:
${temp}= get element attribute xpath=/elementpath class
should contain ${temp} ${ClassName}
或
Wait until page contains element xpath=/elementpath[contains(@class, '${ClassName}')
此页面上的某些解决方案可能会遇到子字符串匹配问题。检查 class 属性(例如 test-run
)是否包含 class(例如 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