2014-09-28 134 views
0

我在写一个测试,我想要获取菜单中显示的所有选项。菜单的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> 

我使用页面对象与水豚做我的测试。目前,我有这个...

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方法,以便从所有元素中获取文本?

回答

1

你可以有menu_options方法:

  1. 获取所有的链接,而不是列表中的项目。
  2. 直接映射每个元素的文本,而不是将它们映射到MenuOption。

的方法将是:

def menu_options 
    @element.right_click 
    options = @page.all('div.dropdown-menu li a') 
    options.map{ |option| option.text } 
end