如何使用Selenium(C#语法)滚动到屏幕外不可见元素?
Selenium C# 滚动元素问题解答
用JavaScriptExecutor的scrollIntoView完全可行
这个方法不仅可行,反而比Actions类的滚动更适配你遇到的场景。Actions的MoveToElement()依赖元素在视口中的可见性,当元素完全不在视口内时,这个方法经常会失效;而scrollIntoView()是直接通过浏览器JS引擎触发滚动,不管元素当前是否可见,都能强制把它滚动到视口范围内。
正确的C#代码写法如下:
IJavaScriptExecutor js = (IJavaScriptExecutor)driver; js.ExecuteScript("arguments[0].scrollIntoView(true);", element);
注:scrollIntoView(true)是默认参数,会让元素顶部对齐视口顶部;如果需要元素底部对齐视口底部,可以把参数改成false。
不需要再用Actions类的滚动方式
scrollIntoView()已经完成了滚动到元素的操作,此时元素已经处于视口可见状态,后续直接操作元素(比如点击、输入)即可。额外调用MoveToElement()属于重复操作,不会带来任何额外效果,反而冗余。
唯一的例外是:如果你的后续操作需要模拟鼠标悬停在元素上(比如触发下拉菜单、提示框),那可以调用MoveToElement();但如果只是为了让元素可见,完全没必要多此一举。
内容的提问来源于stack exchange,提问作者gabiO85
相关产品推荐
相关产品推荐

