2016-11-26 121 views
0

我有一个这样的HTML代码。在uib下拉菜单中选择元素

<div ng-if="!hide" class="dropdown pull-right" uib-dropdown> 
    <a uib-dropdown-toggle href="" > 
    <div class="btn btn-primary-outline btn-circle btn-xs pull-right comment-button"> 
     <span class="icon icon-chevron-down"></span> 
    </div> 
    </a> 
    <ul class="dropdown-menu " style="text-align: center;" role="menu" uib-dropdown-menu> 
     <li role="divider" ng-if="showDelete"><a href="" ng-click="deleteItem($index)">delete </a></li> 
     <li role="divider"><a href="" ng-click="Report()"> report</a></li> 
    </ul> 
</div> 

在量角器中使用时遇到与uib-dropdown选择有关的问题。 我写这样的代码:

var dropDown = element(by.css("div[uib-dropdown]")); 
dropDown.element(by.css("a[uib-dropdown-toggle]")); 
dropDown.element(by.css("a[ng-click=deleteItem($index)]")).click(); 
browser.sleep(5000); 
+0

什么是抛出 –

+0

失败的错误:无效的选择:一个无效的或非法的选择是specified.Thanks @ Danny.this错误进入第二行我认为 – Shiva

回答

0
this.selectMenuOption = function (option) { //menu item to click 
    var dropdown = element(by.className('dropdown pull-right'));   
    dropdown.click(); 
    dropdown.element(by.tagName('ul')).all(by.tagName('li')).filter(function (elem) { 
     return elem.getText().then(function (val) { 
      return val.toUpperCase() === option.toUpperCase(); 
     }) 
    }).first().click(); 
} 
+0

抛出一个错误@Danny:失败:无法读取未定义的属性'toUpperCase' 堆栈: TypeError:无法读取属性' toUpperCase'undefined – Shiva

+0

非常感谢,它的工作很好@丹尼 – Shiva

+0

如果它的正确答案,你可以标记为正确的答案。让其他人可以很容易 –

0

a[ng-click=deleteItem($index)]实际上是一个无效的CSS选择器,你需要put the attribute value into quotes

dropDown.element(by.css('a[ng-click="deleteItem($index)"]')).click(); 

虽然,我会去部分匹配看起来更具可读性:

dropDown.element(by.css('a[ng-click*=deleteItem]')).click(); 

其中*=表示“包含”。


或者,你甚至可以去“链接文本”定位:

dropDown.element(by.linkText('delete')).click(); 
dropDown.element(by.partialLinkText('delete')).click(); 
+0

以上所有的方式尝试,仍面临同样的问题。 @ alecxe.please帮我解决 – Shiva

+0

@Shiva好吧。尽管如此,你不应该得到同样的错误。你看到什么错误?谢谢 – alecxe

+0

仍然面临同样的问题。页面包含两个下拉的无法找到第二个元素@alecxe – Shiva