【问题标题】:Accessing a nested element 3 levels deep using page objects使用页面对象访问嵌套元素 3 级
【发布时间】:2015-03-21 19:55:57
【问题描述】:

使用页面对象模型和 gem,我想访问嵌套 3 层深的元素。我已经成功访问​​了 2 个元素深度的嵌套元素,但对于 3 个元素,相同的方法不起作用。

在我的页面对象中定义的 3 个元素:

div(:serv_info, :class => "service-info")
div(:validate_method, :class => "validate-method")
div(:scar_input_group, :class => "input-group")

所以我尝试像这样链接这 3 个元素来访问 div class input-container input-left-half round

div(:scar_first_name_error){validate_method_element.serv_info_element.scar_input_group_element.div_element(:class => "input-container input-left-half round")}

但是我得到了serv_info_element 是一个未定义的方法的错误,这是有道理的,但是是否可以链接我上面提到的3 个预定义元素来访问input-container input-left-half round

我读到了这个:https://github.com/cheezy/page-object/wiki/Nested-Elements,但如果我能提供帮助,我不想重复任何代码。

【问题讨论】:

    标签: ruby watir watir-webdriver page-object-gem pageobjects


    【解决方案1】:

    假设嵌套始终相同,而不是让 :scar_first_name_error 映射到每个祖先,您可以定义每个元素相对于其父(或祖先)的元素。

    让我们假设 HTML 是:

    <html>
      <body>
        <div class="validate-method">
          <div class="service-info">
            <div class="input-group">
              <div class="input-container input-left-half round">
                text
              </div>
            </div>
          </div>
        </div>
      </body>
    </html>
    

    您可以将页面定义为:

    class MyPage
      include PageObject
    
      div(:serv_info) { validate_method_element.div_element(:class => "service-info") }
      div(:validate_method, :class => "validate-method")
      div(:scar_input_group) { serv_info_element.div_element(:class => "input-group") }
      div(:scar_first_name_error) { scar_input_group_element.div_element(:class => "input-container input-left-half round") }
    end
    

    请注意,:serv_info 是针对其父 :validate_method 定义的,:scar_input_group 是针对其父 :serv_info 定义的,等等。

    通过这个页面对象,我们可以看到我们可以获取下部元素的文本:

    page = MyPage.new(browser)
    p page.scar_first_name_error
    #=> "text"
    

    【讨论】:

    • 谢谢贾斯汀,我会试试看它是否有效。
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多