2

我試圖點擊位於中繼器內的元素。問題是這是一個模態對話框,併爲中繼器返回多個元素。當您在我們的應用程序中進入頁面時,其中的每個頁面都是模態對話框。因此,當您導航到某個頁面時,上一頁實際上仍然在您看到的頁面下方。這是爲了支持在點擊後退按鈕後能夠回到您確切的位置(不重新加載)。點擊後退按鈕只會關閉當前模式,並顯示隱藏在該模式下的內容。量角器模態對話框返回ng-repeater的多個結果

這裏是我使用的中繼器:

this.searchResults  = element.all(by.repeater('provider in providers')); 

這是返回什麼(我當時在控制檯該類的搜索只是讓我可以看到正在返回什麼): enter image description here

如何獲得轉發器返回的結果之一以點擊其中的元素?

回答

1

this.searchResults將包含一個ElementArrayFinder(基本上是一個元素數組),您可以通過多種方式進行操作。例如,爲了獲得一個特定的元素:

this.searchResults.get(2); 
this.searchResults.first(); 
this.searchResults.last(); 

然後,您可以elementall到中繼器行內搜索:

this.searchResults.get(2).element(by.css(".provider-list-info-link")); 

還有函數式編程「工具」例如map(),each()功能。

此外,您可以通過row() and column()轉到行中和列。

+0

我必須做的唯一改變是使用0或1而不是2,但除此之外,這有幫助,謝謝! – rfodge

+0

出於好奇 - 我的一個問題是我試圖做這個.searchResults.then(功能(結果).....然後工作的結果。因爲我認爲中繼器返回一個承諾。來吧它的作品無需使用。然後在這裏? – rfodge

+0

@rfodge是的,這是量角器內部處理。鏈接是分開實施的東西([changeset](https://github.com/angular/protractor/commit/cc4f7b55e1fe46fcef1b8c3ca39d702a32ee6d82 ))。 – alecxe