2017-01-17 3 views
1

enter image description hereКак выбрать опцию из ng ретранслятора по тексту в транспортир?

необходимо выбрать второй вариант с текстом «rajeshwar_9032». ниже - это функция, которую я написал, чтобы щелкнуть по опции ng-repeat, но я не могу этого сделать. пожалуйста помоги.

this.SelectProfile = function(Profile){    
     element.all(by.repeater("profile in vm.allProfiles")).each(function (elm) { 
      var desiredprofile = elm.element(by.xpath('//div/div/div/div/span[contains(text(), "'+Profile+'")]')); 
      desiredprofile.click(); 
     }); 

где текст передается в аргументе «Профиль»

+0

Удалить изображение и добавить фрагмент html напрямую? – AdityaReddy

ответ

1

Вы можете использовать by.cssContainingText('<<>css>', '<<text>>'), а не такой, чтобы сделать XPath его более стабильным.

см here для более подробной информации

Вы можете сделать что-то вроде ниже

this.SelectProfile = function(Profile) { 
    return element.all(by.repeater("profile in vm.allProfiles")).filter(function(elm) { 
    return elm.element(by.css('.username')).getText().then(function(text) { 
     return text === profile; 
    }) 
    }).first().element(by.css('.username')).click() 
} 
+0

Спасибо, что это сработало –

+0

Но он все еще говорит, что в консоли не обнаружено ни одного элемента. Вероятно, это может быть потому, что код пытается щелкнуть, хотя текст не соответствует. Должны ли мы использовать условие для удовлетворения щелчка? –

+0

Нет. 'Click()' не запускается, это элемент, если он не найден ... он будет выходить из системы непосредственно в 'Element Finder' ... у вас может быть' console.log (profile) 'перед этим оператором, чтобы проверить значение его хранения – AdityaReddy

1
Finally arrived at a solution. Below code works consistently. 

Спасибо, @AdityaReddy я сделал небольшие хитрости, чтобы ваше предложение, и она работала great.Hope это помогает.

this.SelectProfile = function(Profile) { 
element(by.css('.icon-person-plus')).click(); 
element.all(by.id("select_profile_button")).filter(function(elm) { 
    return elm.element(by.css('.username')).getText().then(function(text) { 
    return text === Profile; 
    }) 
    }).then(function(filteredElement){ 
       filteredElement[0].element(by.css('.username')).click(); 
    }); 
} 
+0

Рад, что это сработало :) – AdityaReddy

Смежные вопросы