在量角器一个下拉菜单中选择元素(Selecting a element in a drop-down

2019-10-20 09:19发布

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

<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结构。

好心的建议

Answer 1:

我已经通过直接设置值的处理相同的情况下。 定位元件和设置使用“的SendKeys”的值。

尝试为您的方案相同。



Answer 2:

您必须使用中继器定位器试过吗?

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);
    });
}


文章来源: Selecting a element in a drop-down menu in protractor
标签: protractor