是否可以通过只有Element来获取PageObject元素的标识符? (cheezy pageobject gem)
Element的属性是否保留了元素的名称。
例如,在这种情况下:
text_field(:name, :id => 'name')
如果我只有元素,我怎么能找到它的名字? :)
感谢您的帮助。
编辑:
好的,这就是我要做的事情:
我有一个名为AttributePage的pageObject,它定义了一些元素:
class AttributePage < PropertyPage
include PageObject
include DataMagic
page_url NavigationHelpers::get_path 'catalog-attributes'
# Header
textfield(:attribute_sets, :id =>'ext-1') # 1.
textfield(:global_attributes, :id => 'ext-2') # 2.
end
和一个如下所示的PageObject PropertyPage:
class PropertyPage
include PageObject
def get_search_filter_elements
element_methods = self.class.instance_methods(false).find_all{ |m| m =~ /_element$/ }
elements = element_methods.collect{ |m| self.send(m) }
return_array =[]
for x in 0...element_methods.size
return_array.append([element_methods[x].to_s.gsub('_element', ''), elements[x]])
end
return return_array
end
这样,当我打电话
on_page(AttributePage).get_search_filter_elements
我得到一个PageObject :: Element列表。 我想要做的是调用看起来像这样的AttributePage.fill_elements:
def fill_elements
elements = get_search_filter_elements
elements.each do |element|
# Now this doesn't work
element.text = read_from_some_file_for_element_name element.name
end
有什么方法可以做到这一点吗?
答案 0 :(得分:0)
首先让我创建一个更完整的页面对象(PO)类供参考
假设您在页面上有一些html,其文本字段的ID为“name”
<input type="text" id="name" value="zzz" name="yyy"/>
class MyPage
include PageObject
text_field(:name, :id => 'name')
end
myPage = MyPage.new
p myPage.name_element #Output => PageObject::Elements::TextArea
p myPage.name? #Output => 'true'
p myPage.name #Output => 'zzz'
myPage.name = 'bbb' #Sets value of text_field to 'bbb'
p myPage.name #Output => 'bbb'
这四个方法都是动态创建的,因为定义了页面元素'text_field(:name,...)'
你的问题含糊不清,但我想你想知道的是,既然你已经在页面对象中映射了这个元素,那么你将如何得到它的名字,这意味着它的html名称?那么只有当问题的html元素具有'name'属性时才会起作用。如果是这样,就像我上面的例子一样,那么你将使用name_element对象访问它的名字,如下所示:
p myPage.name_element.name #Output => 'yyy'