2014-08-27 25 views
2

在我的頁面中,有2個「重複」,「小部件中的小部件」,「widgetsOnPage中的小部件」。當我嘗試通過element.all(by.repeater('widget in widgets'));找到一個元素時,它會從兩個重複中找到元素。量角器定位器by.repeater與'contains'一起使用,而不是'equals'

我也試試,量角器例如測試("\node_modules\protractor\example\example_spec.js")「在待辦事項待辦事項」中繼器改變到:

todoList = element.all(by.repeater('to')); 

並測試通過。

  • 如何找到與字符串完全相同的重複項?
  • 該行爲是否是量角器或特徵的缺陷?

謝謝。

回答

2

by.repeater定位器基於findRepeaterElement()函數。根據它的implementation,它正在搜索的ng-repeat屬性值內的中繼子過去了,看到內環路這indexOf電話:

for (var i = 0; i < repeatElems.length; ++i) { 
    if (repeatElems[i].getAttribute(attr).indexOf(repeater) != -1) { 
    rows.push(repeatElems[i]); 
    } 
} 

由於widget in widgetswidget in widgetsOnPage一子,有一個匹配。


由於行爲有點令人驚訝,我會向protractor github issue tracker提交問題。

+0

謝謝, 有任何解決方法? – 2014-08-27 20:32:58

+1

我剛剛打開[問題#1247](https://github.com/angular/protractor/issues/1247),稍後檢查Julie/Hank的答案。 – 2014-08-27 21:30:47

+1

@elgalu非常感謝您的報告,將繼續跟蹤它。 – alecxe 2014-08-27 21:31:36

1

你總是可以嘗試的CSS選擇器,其中可能包括多餘的文字:

$$('[ng-repeat="widget in widgets"]'); 
$$('[ng-repeat="widget in widgetsOnPage"]'); 

這將限制輸出到你想要的一個。

相關問題