2016-12-14 68 views
0

我正在寻找验证链接被禁用的方法。这是一个子菜单链接,我将鼠标悬停在home menu链接上,然后显示子菜单链接列表。由于某些用户角色,此用户无法访问报告页面,因此我需要验证该链接已禁用。 class属性表明。红宝石黄瓜:使用页面对象获取属性

HTML:

<div id="homeMenu"> 
    <ul> 
     <li class="has-sub"> 
      <a class="homeButton" href="/report-web"></a> 
      <ul id="homeLinks"> 
      <li id="oepLiId"> 
        <a id="reportLinkId" class="disabledLinks" href="/report-web/openItems?subApp=OEP&rptid=15"> 
        <span id="reportLinkName">Reporting Processing</span> 
       </a> 
      </li> 
     </ul> 
     </li> 
     </ul> 
    </div> 

我使用看跌期权如下:

link = @browser.find_element(:id, 'reportLinkId') 
    puts link.displayed? 
    puts link.enabled? 

它打印:

true 
    true 

的联系是displayedenabled。我能想到的唯一方法是检查class属性以查看它是否被定义为disabledLinks

使用页面对象:

 link(:report_link, :id => 'reportLinkId') 


     class_attribute = report_link_element.attribute('class') 
     expect(class_attribute.eql?('disabledLinks')).to be true 

不使用页面对象:

 class_attribute = @browser.find_element(:id, 'reportLinkId').attribute('class') 

但是,这两种方式,我得到了class_attribute是空的。

环境:

Ruby: 1.9.3 
    Cucumber: 2.1.0 
    Selenium Webdriver: 2.53.4 
    page-object: 1.2.0 

我缺少什么?

+0

在你的HTML例子中,你有一个'id =“oepLinkId”'的链接,但是在你的页面对象中使用':id =>'reportLinkId'' – Evmorov

+0

@Evmorov好的。这是一个错字。我更新了我的问题。问题依然存在。谢谢! – fongfong

+0

你的代码在简单的页面上可以正常工作。您是否在只有该链接的页面上尝试过您的代码?你使用什么浏览器(我试过Chrome和IE11)。我使用Ruby 2.3,但似乎不太可能成为问题。 –

回答

0

这是发生了什么事。 id值在开发过程中发生了变化。我更新了它,它工作。谢谢大家!