【问题标题】:Robot framework, how to check class机器人框架,如何检查类
【发布时间】:2017-09-13 23:17:50
【问题描述】:

Robot Framework 中是否有关键字来确保元素具有特定的类?类似的东西

Element should has class element className

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

【问题讨论】:

    标签: html selenium testing tdd robotframework


    【解决方案1】:

    您可以通过 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

    【讨论】:

    • | FAIL | Element 'loginButton[contains(@class, 'button-blue')]' did not appear in 5 seconds 即使有一个 id 为 loginButton 和类 button-blue 的元素。我还假设第一个示例中的 className 需要花括号来评估变量。
    • @TuomasToivonen:我忘记了花括号,抱歉。它现在应该可以工作。 loginButton 不是有效的 XPath 或 CSS 选择器,请使用 #loginButton//*[@id='loginButton']
    【解决方案2】:

    这是另一种解决方案(尽管接受的答案的 CSS 非常好),适用于任何类型的选择器策略:

    Element should have class
        [Arguments]  ${locator}  ${target value}
    
        ${class}=       Get Element Attribute  ${locator}@class
        Should Contain  ${class}        ${target value}
    

    它可以针对任何其他属性进行修改 - 只需将 Get Element Attribute 中的 @class 替换为它(或者甚至将其设为可选参数)。

    【讨论】:

      【解决方案3】:

      此页面上的某些解决方案可能会受到子字符串匹配的影响。检查类属性(例如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
      

      【讨论】:

        【解决方案4】:

        以下是两种方式的示例:

            ${temp}=    get element attribute       xpath=/elementpath    class
            should contain        ${temp}   ${ClassName}
        

         Wait until page contains element  xpath=/elementpath[contains(@class, '${ClassName}')
        

        【讨论】:

          猜你喜欢
          • 2019-01-23
          • 2021-01-17
          • 2015-09-08
          • 1970-01-01
          • 2020-03-17
          • 2021-01-11
          • 2016-04-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多