2016-10-27 8 views
2

このドロップダウンリストで特定の要素を選択する方法を教えてください。 xpath(またはより良い選択肢)を使用して特定のドロップダウン要素を選択する

<li role="presentation" ng-repeat="match in $matches" ng-class="{active: $isActive($index)}" class="ng-scope active"> 
    <a style="cursor: default" role="menuitem" tabindex="-1" ng-click="$select($index, $event)"> 
     <!-- ngIf: $isMultiple && $isActive($index) --> 
      <i class="glyphicon glyphicon-ok pull-right" ng-if="$isMultiple &amp;&amp; $isActive($index)"></i> 
     <!-- end ngIf: $isMultiple && $isActive($index) --> 
     <span ng-bind="match.label" class="ng-binding">Streamer</span> 
    </a> 
</li> 

私はこの

element(by.model('selectedAvailable')).click(); 
element(by.xpath('..//ul//li[1]')).click(). 

、これを試してみました:

element(by.repeater('match in $matches').row(0)).click(); 

答えて

1

Iだろうfilter()それ、あなたが "ストリーマー" のラベルを知っているし、それを選択したいと仮定すると:

var matches = element.all(by.repeater('match in $matches')); 
matches.filter(function (match) { 
    return match.element(by.binding("match.label")).getText().then(function (text) { 
     return text === "Streamer"; 
    }); 
}).first().click(); 

または同様のevaluate()代わりのgetText()とファッション:

var matches = element(by.repeater('match in $matches')); 
matches.filter(function (match) { 
    return match.evaluate("match.label").then(function (label) { 
     return label === "Streamer"; 
    }); 
}).first().click(); 
+0

私はあなたが() '$でマッチが一致する'(by.repeater 'element.allを書くためのものだと思います) '。 –

+0

@FlorentB。ああ、ええ、ありがとう! – alecxe

+0

alecxe ..あなたは私の質問を見ることができますか? http://stackoverflow.com/questions/40284366/how-to-integrate-protractor-test-cases-with-hiptest –

2

代替はby.cssContainingTextを使用することです:

element(by.cssContainingText('[ng-repeat="match in $matches"]', 'Streamer')).click(); 
+0

これは見えますか?助けてください.. http://stackoverflow.com/questions/40284366/how-to-integrate-protractor-test-cases-with-hiptest –

+0

こんにちはFlorent、任意のアイデアなぜその要素を見つけることができません?メッセージ: 失敗:ロケータを使用している要素がありません:by.cssContainingText( "$ matches"]、 "Streamer"で[ng-repeat = "一致]) スタック: NoSuchElementError:ロケータを使用している要素が見つかりません:by.cssContainingText "$ matches"] "、" Streamer "の[ng-repeat =" match]) – jmd1002

+0

要素はまだ作成されていません。 waiterを使って試してください: 'browser.wait(EC.presenceOf(element)...)、15000);' –

関連する問題