Python selenium 滚动条 详解
在我们使用Python + selenium 爬虫的时候,会遇到如下报错,原因是 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。
selenium.common.exceptions.WebDriverException: Message: unknown error: Element is not clickable at point (219, 1511)
这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,
这时候只能借助Js了,还好selenium提供了一个操作js的方法:
execute_script(),可以直接执行js的脚本。
一 、控制滚动条高度
1.滚动条回到顶部:
js="var q=document.getElementById(‘id‘).scrollTop=0" driver.execute_script(js) 2.滚动条拉到底部 js="var q=document.documentElement.scrollTop=10000" driver.execute_script(js) 3.这里可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部。
js="var q=document.documentElement.scrollTop=5000"
driver.execute_script(js)
二、控制横向滚动条
1.有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)。 2.通过左边控制横向和纵向滚动条scrollTo(x, y)
js = "window.scrollTo(100,400);" driver.execute_script(js)
3.第一个参数x是横向距离,第二个参数y是纵向距离
附:
# 移动到元素element对象的“顶端”与当前窗口的“顶部”对齐 driver.execute_script("arguments[0].scrollIntoView();", element); driver.execute_script("arguments[0].scrollIntoView(true);", element); # 移动到元素element对象的“底端”与当前窗口的“底部”对齐 driver.execute_script("arguments[0].scrollIntoView(false);", element); # 移动到页面最底部 driver.execute_script("window.scrollTo(0, document.body.scrollHeight)"); # 移动到指定的坐标(相对当前的坐标移动) driver.execute_script("window.scrollBy(0, 700)"); # 结合上面的scrollBy语句,相当于移动到700+800=1600像素位置 driver.execute_script("window.scrollBy(0, 800)"); # 移动到窗口绝对位置坐标,如下移动到纵坐标1600像素位置 driver.execute_script("window.scrollTo(0, 1600)"); # 结合上面的scrollTo语句,仍然移动到纵坐标1200像素位置 driver.execute_script("window.scrollTo(0, 1200)");
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术