在量角器中选择下拉菜单中的元素

时间:2014-07-01 15:14:22

标签: protractor

我的页面上有一个下拉菜单。我的量角器测试的目标是单击此下拉菜单中的一个选项,并让量角器检查结果:

<ul class="dropdown">
  <li class="nav-header">portfolio</li>
  <li class="divider"></li>
  <li class="dropdown-submenu"> ... </li>


   <li ng-repeat="p in user.portfolios">
    <!-- this is the option we will click for our testing -->
    <a href ng-click="displayPortfolio(p)>Portfolio 1  </a>
   </li>

   <li ng-repeat="p in user.portfolios">
    <a href ng-click="displayPortfolio(p)>Portfolio 2  </a>
   </li>  

   <li ng-repeat="p in user.portfolios">
    <a href ng-click="displayPortfolio(p)>Portfolio 3  </a>
   </li>  


</ul>

我的量角器测试看起来像:

it('should display relevant portfolio when clicked',function(){

    ptor.ignoreSynchronization = true;  
    element.all(by.xpath("//a[@ng-click='displayPortfolio(p)'])).then(function(list){
      list[0].click();
      expect(... some assertion here);

    });
    ptor.ignoreSynchronization = false;  
}

万一你想知道,ptor.ignoreSynchronization已启用,因为我的网页不断轮询后端的某些更新。

当我运行测试时,量角器会抛出以下错误:

ElementNotVisisbleError: element not visible

我不清楚这个错误是什么。该元素肯定是可见的,因为当我查看页面的源代码时,我可以在DOM结构中看到它。

请咨询

2 个答案:

答案 0 :(得分:0)

我通过直接设置值来处理相同的情况。找到元素并使用“sendKeys”设置值。

为您的方案尝试相同的方法。

答案 1 :(得分:0)

您是否尝试过使用转发器定位器?

it('should display relevant portfolio when clicked',function(){
    var elements = element.all(by.repeater('p in user.portfolios'));
    elements.get(0).click().then(function(){
        expect(... some assertion here);
    });
}