I'm quite new to e2e testing and in using protractor / jasmine framework. I know how to get an array of elements and also how to click on an anchor. But how would / is it even possible to click through a list of anchors returned by a element selector / repeater?
I've been trying various ways, but as an example (latest one which hasn't been deleted lol) this is what I got:
element.all(by.repeater('link in links')).then(function(links) {
links.forEach(function(link) {
link.click().then(function() {
console.log('callback for click ');
});
});
});
This appears to take the first element and click through, however come the next iteration it hangs (I can see why, but struggling to figure a way to resolve - is this some kind of promise & resolve factor i need to take into account?)
The error coming back is
Failed: stale element reference: element is not attached to the page document
Any guidance / link to help would be appreciated - googling hasn't returned anything of note to me so far...
Thanks in advance!
Managed to figure a workaround, although this doesn't feel quite right. Anyway, if anyone has better suggestion feel free to post :)
To avoid the "staleness" problem, you have to get an array of
href
resolved attribute values, whichmap()
+then()
can help you with (as you've already provided). You just don't needindex
and you can iterate over links starting from the first:Solution 01
Solution 02