我正在编写一个测试,我希望获得菜单中显示的所有选项。菜单的HTML如下:
<div class="dropdown-menu context-menu open" style="display: block; left: 421px; top: 352px;">
<li>
<a href="#" onclick="save;">Save</a>
</li>
<li>
<a href="#" onclick="duplicate;">Duplicate</a>
</li>
<li>
<a href="#" onclick="delete;">Delete</a>
</li>
</div>
我正在使用Capybara的页面对象进行测试。目前,我有这个......
module PageObjects
module SomePage
class OtherPage < PageObject
def menu_options
@element.right_click
options = @page.all('div.dropdown-menu li')
menu_options = options.map{ |option| MenuOption.new(option)}
return menu_options.map{|m| m.text}
end
end
class MenuOption < PageObject
def text
@element.find('a').text
end
end
end
end
这使我可以在我的测试中致电other_page.menu
并获取["Save","Duplicate","Delete"]
。我希望做的是摆脱MenuOption类。有没有办法编写menu_options
方法,以便从所有元素中获取文本?
答案 0 :(得分:1)
您可以使用menu_options
方法:
方法是:
def menu_options
@element.right_click
options = @page.all('div.dropdown-menu li a')
options.map{ |option| option.text }
end