我想知道是否有辦法在量角器中選擇多個鏈接,當你不知道鏈接的數量。目前,我有一個包含多個(數量不詳),我必須選擇鏈接表(點擊和移動頁面),然後經過一系列的流程,測試我寫:在量角器中選擇多個鏈接
<table border="0" class="bodyTable">
<tbody><tr class="a">
<th>Name</th>
<th>Description</th></tr>
<tr class="b">
<td><a href="Link3">Link1</a></td>
<td>-</td></tr>
<tr class="a">
<td><a href="Link3">Link2</a></td>
<td>-</td></tr>
<tr class="b">
<td><a href="Link3">Link3</a></td>
<td>-</td></tr>
<tr class="a">
<td><a href="Link4">Link4</a></td>
<td>-</td></tr>
</tbody>
這個問題是(我正在使用Protractor異步,因爲這是一個非Angular應用程序),因爲鏈接後面的頁面大部分是相同的,我如何選擇未知列表中的每個元素,而不用重寫一個荒謬的數量的代碼。
我以前的方法是圍繞計數TR的表中,並推出一系列的循環週轉不過是笨拙的,那麼,只是壞代碼:
//something like this
elements(by.tagName('tr')).count().then(function(numberOfTRs) {
for(int i = 1; i <= numberOfTRs; i++)
elements(by.tagName('tr')).get(i);
});
不過,承諾繼續後頁加載並且當然會產生錯誤。應該有一種方法可以等待(不使用browser.sleep(...)),但我不確定要做什麼。通常我會研究這個問題,但我甚至不知道要搜索什麼(我猜「白癡搭配以非設計方式使用量角器」會變得很多)。
在此先感謝...
編者按:
一個理想的功能會以這種方式工作
element(whatever).all(listsoflinks).someFunction(function (elementToUse, index) {
//...do stuff....
//....return to page....
});
我能找到的將是「每個」功能最接近的事,但它崩潰與錯誤:
Failed: Element not found in the cache - perhaps the page has changed since it was looked up For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12' System info: host: 'BAHCND4397GQF', ip: '10.138.1.15', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_72' Driver info: driver.version: unknown
So, obviously the function is "loosing" its footing when the page change happens
我把計數器(console.log)在「每個」功能和它,當然,飛過,好像它不是諾言的一部分...
這看起來與我之前嘗試過的相似,問題在於頁面會加載,然後立即加載循環中的下一頁(或者由於頁面已更改而不再存在的元素,會被選中),這可能會在循環中使用多個瀏覽器實現來解決,但這與其他任何東西一樣笨拙(必須有這樣做的方式沒有) – jsNoob
@jsNoob它取決於你在身體中有什麼的循環。你到底在做什麼? – alecxe
暫停@alecxe我要做一個編輯我認爲我有我想要做的答案 – jsNoob