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

时间:2016-10-14 18:11:05

标签: javascript selenium

webdriver.executeScript("arguments[0].scrollIntoView();", element);

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

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

2 个答案:

答案 0 :(得分:7)

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

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

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

webdriver.executeScript("arguments[0].scrollIntoView(false);", element);

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

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

或者在固定标题下面:

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

答案 1 :(得分:1)

如果您需要关注特定元素,请尝试以下操作:

JavascriptExecutor js =(JavascriptExecutor)driver;
WebElement element =(WebElement)js.executeScript("document.querySelector('#urID').focus()");
  • 您需要将#urID更改为正确的CSS定位器。