I have an button on my page that is visible when the user scrolls down. Because of this, protractor tests give me an error:
UnknownError: unknown erro
You need to wait for the promise to be solved. The following example comes from an open issue
browser.executeScript('window.scrollTo(0,0);').then(function () {
page.saveButton.click();
})
Update:
This is an old question (May of 2014), but still it is getting some visitors.
To clarify: window.scrollTo(0, 0)
scrolls to the top left corner of the current page.
If you want to scroll to the bottom of your page you could call
window.scrollTo(0, document.body.scrollHeight)
as mentioned by @jsuser in this answer
A more modern approach would be using
browser.actions().mouseMove(element).perform();
Upvotes to @MartinBlaustein in this answer
I found that creating a util helper and using it inside page objects (or the test files themselves) helped. This seems to work well for me:
module.exports = {
scrollIntoView: function(el) {
browser.executeScript(function(el) {
el.scrollIntoView();
}, el.getWebElement());
}
}
var scrollIntoView = require('../utils').scrollIntoView;
module.exports = {
clickBackBtn: function() {
var el = element(by.buttonText('Go back'));
scrollIntoView(el);
el.click();
return;
}
}
it('should allow the user to go back to the profile page', function() {
PageObject.clickBackBtn();
expect(browser.getCurrentUrl()).toContain('/user/profile');
});
I found an easier way. If you want to scroll to an element you can use
browser.actions().mouseMove(element).perform();
After that the browser will be focusing the element.