机器人框架,如何检查课程

时间:2017-04-18 07:58:12

标签: html selenium testing tdd robotframework

Robot Framework中是否有关键字以确保元素具有某个类?像

这样的东西

Element should has class element className

或者,我可以检查元素是否具有特定值的特定属性。虽然前者更合适,因为元素可能包含多个类。

4 个答案:

答案 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}')