I have tried a few ways of adding scrolling to tables, but just one of them works correctly. What is the different between them?
First:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView();", Element);
Second:
WebElement element1 = driver.findElement(By.id("scrolled_element"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element1);
Third:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(0,1000)");
Fourth:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
Advertisement
Answer
Element.scrollIntoView()
Element.scrollIntoView() method scrolls the element on which it’s called into the Viewport of the browser window.
Syntax:
element.scrollIntoView()element.scrollIntoView(alignToTop)// Boolean parameterelement.scrollIntoView(scrollIntoViewOptions)// Object parameter
Your usecases:
executeScript("arguments[0].scrollIntoView();", Element): This line of code will scroll the element into the visible area of the browser window.executeScript("arguments[0].scrollIntoView(true);", element1): This line of code will scroll the element to be aligned to the top of the Viewport of the scrollable ancestor. This option corresponds toscrollIntoViewOptions: {block: "start", inline: "nearest"}. Basically, this is the default value.executeScript("arguments[0].scrollIntoView(false)", element1);: This line of code will scroll the element to be aligned to the bottom of the Viewport of the scrollable ancestor. This option corresponds toscrollIntoViewOptions: {block: "end", inline: "nearest"}.
Window.scrollBy()
window.scrollBy() method scrolls the document in the current window by the given amount.
Syntax:
window.scrollBy(x-coord, y-coord)window.scrollBy(options)
Parameters:
x-coordis the horizontal pixel value that you want to scroll by.y-coordis the vertical pixel value that you want to scroll by.optionsis aScrollToOptionsdictionary.
Your usecase:
executeScript("window.scrollBy(0,1000)"): This line of code will scroll the document in the window down by0horizontal pixels and1000vertical pixels that you want to scroll by.
Window.scrollTo()
Window.scrollTo() method scrolls to a particular set of coordinates in the document.
Syntax:
window.scrollTo(x-coord, y-coord)window.scrollTo(options)
Parameters:
x-coordis the pixel along the horizontal axis of the document that you want displayed in the upper left.y-coordis the pixel along the vertical axis of the document that you want displayed in the upper left.optionsis aScrollToOptionsdictionary.
Your usecase:
executeScript("window.scrollTo(0, document.body.scrollHeight)"): This line of code will scroll the document in the window down to thebottomof the page.