scenario 1) stale element reference error
it("should have elements", function (done) { var def = protractor.promise.defer(); var prm = browser.findelements(by.css("jive")).then((elements) => { elements.foreach((ele) => { var id = ele.getid(); var loc = ele.getlocation(); var inner = ele.getinnerhtml(); var text = ele.gettext(); var tag = ele.gettagname(); }); def.then((wtf) => { debugger; }); }); done(); }); i thought code above have ton of promises on queue after running through iteration on elements. when def.then statement runs selenium telling me have stale elements. iteration running through elements css.
i hoping array of resolved promises iteration requested...
scenario 2) gives stale element reference
var promises = array<webdriver.promise.promise<any>>(); var allelements: webdriver.iwebelement[] = []; it("should have elements", function (done) { var alllinks: webdriver.webelement[]; browser.controlflow().execute(() => { browser.findelements(by.tagname("a")).then((works) => { alllinks = works; alllinks.foreach((ele) => { promises.push(ele.getattribute("href")); promises.push(ele.getid()); promises.push(ele.getinnerhtml()); promises.push(ele.getlocation()); }); //getting stale reference here... protractor.promise.all(promises).then((wtf) => { debugger; }); debugger; }); }); please advise.
i think need map():
var links = element.all(by.tagname("a")).map(function (link) { return { href: link.getattribute("href"), id: link.getid(), innerhtml: link.getinnerhtml(), location: link.getlocation() } }); now links contain promise resolving array of objects.
Comments
Post a Comment