Ruby 使用页面对象访问嵌套元素3层
使用页面对象模型和gem,我想访问嵌套3层的元素。我已经成功访问了嵌套元素,这些元素有2个元素深,但对于3个元素,相同的方法不起作用 我的页面对象中定义的3个元素:Ruby 使用页面对象访问嵌套元素3层,ruby,watir,watir-webdriver,page-object-gem,pageobjects,Ruby,Watir,Watir Webdriver,Page Object Gem,Pageobjects,使用页面对象模型和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(:serv_info, :class => "service-info")
div(:validate_method, :class => "validate-method")
div(:scar_input_group, :class => "input-group")
因此,我尝试链接这3个元素以访问div
类
输入容器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 left half round
我读过这篇文章:但如果我能帮上忙的话,我不想重复任何代码。假设嵌套总是相同的,而不是让
:scar\u first\u name\u 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>
请注意,:serv\u info
是相对于其父级:validate\u method
定义的,:scar\u input\u group
是相对于其父级:serv\u info
定义的
使用此页面对象,我们可以看到,我们可以获得较低元素的文本:
page = MyPage.new(browser)
p page.scar_first_name_error
#=> "text"
谢谢贾斯汀,我会试试看它是否有效。
page = MyPage.new(browser)
p page.scar_first_name_error
#=> "text"