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-выпадающего списка. я написал такой код:

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

throwing the error @Danny: Failed: Не удается прочитать свойство 'toUpperCase' из неопределенного Stack: TypeError: Can not read property ' toUpperCase 'неопределенного – Shiva

+0

благодарит много, что он отлично работает @ Danny – 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

@ Шива в порядке. Однако вы не должны получать такую ​​же ошибку. Какие ошибки вы видите? Спасибо – alecxe

+0

все еще сталкиваются с той же самой проблемой. На странице есть два раскрывающихся списка: он не может найти второй элемент @alecxe – Shiva