不同的滚动选项之间有什么区别?

IT技术 javascript selenium js-scrollintoview js-scrollby js-scrollto
2021-01-23 11:35:18

我尝试了几种向表格添加滚动的方法,但只有其中一种方法可以正常工作。它们之间有什么不同?

第一的:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView();", Element);

第二:

WebElement element1 = driver.findElement(By.id("scrolled_element"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element1);

第三:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(0,1000)");

第四:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
2个回答

Element.scrollIntoView()

Element.scrollIntoView()方法将调用它的元素滚动到浏览器窗口视口中

  • 句法:

    • element.scrollIntoView()
    • element.scrollIntoView(alignToTop) // 布尔参数
    • element.scrollIntoView(scrollIntoViewOptions) // 对象参数
  • 您的用例:

    • executeScript("arguments[0].scrollIntoView();", Element):这行代码会将元素滚动到浏览器窗口的可见区域。
    • executeScript("arguments[0].scrollIntoView(true);", element1):这行代码将滚动元素对齐到可滚动祖先视口顶部此选项对应于scrollIntoViewOptions: {block: "start", inline: "nearest"}. 基本上,这是默认值。
    • executeScript("arguments[0].scrollIntoView(false)", element1);:这行代码将滚动元素对齐到可滚动祖先视口底部此选项对应于scrollIntoViewOptions: {block: "end", inline: "nearest"}.

Window.scrollBy()

window.scrollBy()方法按给定量滚动当前窗口中的文档。

  • 句法:

    • window.scrollBy(x-coord, y-coord)
    • window.scrollBy(options)
  • 参数:

    • x-coord 是您要滚动的水平像素值。
    • y-coord 是您要滚动的垂直像素值。
    • options是一ScrollToOptions本字典。
  • 您的用例:

    • executeScript("window.scrollBy(0,1000)"):这行代码将滚动窗口文档下降0水平像素和1000您希望通过滚动垂直像素。

Window.scrollTo()

Window.scrollTo()方法滚动到文档中的一组特定坐标。

  • 句法:

    • window.scrollTo(x-coord, y-coord)
    • window.scrollTo(options)
  • 参数:

    • x-coord 是要在左上角显示的文档水平轴上的像素。
    • y-coord 是要在左上角显示的文档垂直轴上的像素。
    • options是一ScrollToOptions本字典。
  • 您的用例:

    • executeScript("window.scrollTo(0, document.body.scrollHeight)"):这行代码将滚动窗口的文件下来bottom页面。
嗯,executeScript()arguments[0]对作品WebElements其中作为executeScript()document.body该作品目前的浏览器上下文,即在当前窗口它回答了你的问题吗?
2021-03-14 11:35:18
所以我们 3 个滚动条,就 JS 而言,第一个和第二个之间的语法有什么区别?第二个有元素,第一个在 JS 上首先声明
2021-03-19 11:35:18
嗯,((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element1);将在 WebElement 上工作,并将js.executeScript("arguments[0].scrollIntoView();", Element);在窗口上工作直到到达元素?我没有看到这里的高差异,我错了吗?
2021-03-31 11:35:18
executeScript("arguments[0].scrollIntoView();", Element)相当于executeScript("arguments[0].scrollIntoView(true);", element1)我在回答中提到的后者是默认值
2021-04-02 11:35:18
我的意思是这三个: // 垂直滚动 1000 像素,水平JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("window.scrollBy(0,1000)"); 滚动0 像素 // 向下滚动到浏览器中的元素 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].scrollIntoView();", Element); // 向下滚动到页面底部 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("window.scrollTo(0, document.body.scrollHeight)") 剩下的一个问题是为什么在我的第二个原始 exm 中,语法与休息?
2021-04-12 11:35:18

我会在每个例子下面放上相关的文档,方便大家自己参考,并给出一些我非常谦虚的意见:


.scrollIntoView() 与 .scrollIntoView(true)

https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView

应该没有区别,因为文档指出默认情况下,.scrollIntoView()实际上具有默认值true.


.scrollBy()

https://www.w3schools.com/jsref/met_win_scrollby.asp

按指定像素滚动文档。这意味着如果您的左上角视口位于(10,10),则执行 a.scrollby(5,6)意味着视口在移动后将位于 的像素坐标处(15,16)


.scrollToView()

https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo

执行它的建议 - 即滚动您提供的坐标。这是为了滚动不同(即,上述的例子)。这意味着.scrollTo(1,1)将滚动文档,以便您的左上角视口现在位于 像素坐标处(1,1),而不管它之前是什么。


对于您关于什么是总滚动选项的单独问题 - 好吧,还有window.scroll(),但基于下面的 SO 文章,应该没有任何区别scrollTo()

JavaScript window.scroll 还是 window.scrollTo?

和滚动?据我所知,我的第四个例子是横向的
2021-04-04 11:35:18