滚动元素到视图中而不与页眉重叠
Selenium JavaScript - scroll element into view without overlapping with header
webdriver.executeScript("arguments[0].scrollIntoView();", 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);
如果您需要专注于特定元素,请尝试以下操作:
JavascriptExecutor js =(JavascriptExecutor)driver;
WebElement element =(WebElement)js.executeScript("document.querySelector('#urID').focus()");
- 你需要把#urID改成合适的CSS定位符。
请尝试此scrollIntoViewIfNeeded()"希望它能自动处理这个位置。我正在尝试在Salesforce网站。It is working fine
((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoViewIfNeeded();", element)
*注意:在Mozilla中不支持。如果你在Chrome和Edge上工作,那么它可能会工作得很好。
相关文章:
- HighCharts长标题文本在某些元素上重叠
- 如何检测重叠元素下的单击
- 当静态元素与滚动上的固定元素位置重叠时进行检测
- jQuery 可调整大小:如何在调整大小拖动期间获取重叠元素
- 检查两个或多个 DOM 元素是否重叠
- 如何使用可调整大小的元素重叠其他元素
- 如何定位自动重叠的元素
- 正在检测Html元素是否与另一个Html元件重叠
- Svg文本元素被另一个Svg元素重叠
- 根据两个元素的重叠宽度动态设置左填充
- 与另一个子元素重叠列表项
- 使用内联块设置的 Safari/Chrome 重叠元素
- 在重叠元素上注册鼠标事件
- 如何防止重叠元素的冒泡事件
- HTML和需要下拉菜单来重叠元素
- 如何使用CSS3 rotate3d和transformZ控制重叠元素的绘制顺序
- D3js重叠元素:如何“穿过”点击“下”键;元素
- jQuery关于重叠元素的mouseleave问题
- 捕获svg中重叠g元素中的指针事件
- jquery可调整大小,拖动完成后获取重叠元素