Selenium JavaScript - 将元素滚动到视图中而不与标题重叠

SUM*_*SUM 7 javascript selenium

webdriver.executeScript("arguments[0].scrollIntoView();", element);
Run Code Online (Sandbox Code Playgroud)

这会将元素滚动到视图中,但它会在页面的标题后面.

如何将元素滚动到视图中,以便元素位于标题下方而不是标题后面?

Flo*_* B. 9

该方法scrollIntoView可以滚动视图顶部或底部的元素,默认位于顶部:

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

所以你可以在底部滚动它:

webdriver.executeScript("arguments[0].scrollIntoView(false);", element);
Run Code Online (Sandbox Code Playgroud)

您也可以在顶部滚动它,然后按视图高度的1/4滚动:

webdriver.executeScript("arguments[0].scrollIntoView(true); window.scrollBy(0, -window.innerHeight / 4);", element);
Run Code Online (Sandbox Code Playgroud)

或者在固定标题下面:

webdriver.executeScript("arguments[0].scrollIntoView(true); window.scrollBy(0, -arguments[1].offsetHeight);", element, header);
Run Code Online (Sandbox Code Playgroud)