【Python自动化】之利用JS操作页面滚动条(新)
如何操作页面中的滚动条,有以下几个方法:
一、查找可见元素进行滚动页面(通用)
方法一:
①移动到元素element对象的”顶端“,与当前窗口的”顶部“对齐(默认true)
scrollIntoView_js = "arguments[0].scrollIntoView();" 或 scrollIntoView_js = "arguments[0].scrollIntoView(true);"
# 下滑到可见元素 scrollIntoView_js = "arguments[0].scrollIntoView();"
# 确定按钮 sortSureBtn_loc = (By.CSS_SELECTOR, ".footer>button.el-button--primary")
# 查找可见元素进行下滑,滑动至最下面的按钮 self.executeScript(loc.scrollIntoView_js, loc.sortSureBtn_loc)
结果:
②移动到元素element对象的“底端”,与当前窗口的“底部”对齐
scrollIntoView_js = "arguments[0].scrollIntoView(false);"
# 下滑到可见元素 scrollIntoView_js = "arguments[0].scrollIntoView(false);" # 确定按钮 sortSureBtn_loc = (By.CSS_SELECTOR, ".footer>button.el-button--primary") # 查找可见元素进行下滑,滑动至最下面的按钮 self.executeScript(loc.scrollIntoView_js, loc.sortSureBtn_loc)
结果:
方法二:
location_once_scrolled_into_view,此方法把某个元素滚动到可视范围内
def webDriverWait(self, loc): """显式等待,查找单元素""" WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(loc)) return self.find_element(loc) def el_View(self, loc): """滑动到可见的元素""" self.webDriverWait(loc).location_once_scrolled_into_view # 确定按钮 sortSureBtn_loc = (By.CSS_SELECTOR, ".footer>button.el-button--primary") # 查找可见元素进行下滑,滑动至最下面的按钮 self.el_View(loc.sortSureBtn_loc)
二、下滑页面内嵌的滚动条(内嵌)
首先定位此滚轮在页面哪个标签下,class="boxcontainer"
def executeScript(self, js, loc): """执行JS元素""" sleep(1) if loc == None: return self.driver.execute_script(js) else: return self.driver.execute_script(js, self.webDriverWait(loc)) # 下滑内嵌滚动条 scrollTop_js = "var q = document.getElementsByClassName('boxcontainer')[0].scrollTop=10000" # 下滑内嵌滚动条 self.executeScript(loc.scrollTop_js, None)
三、 浏览器自带外边的滚动条滑动(外嵌)
①滚动条下拉距离
window.scrollBy(0,100)
# 或者
var q=document.documentElement.scrollTop=10000
②滚动条上拉距离
window.scrollBy(0,-100):
# 或者
var q=document.documentElement.scrollTop=0
③滚动条滑到底部
window.scrollTo(0,document.body.scrollHeight)
④滚动条滑到顶部
window.scrollTo(document.body.scrollHeight,0)
四、附录
①感谢幸运球与倒霉蛋的《selenium中元素操作之浏览器窗口滚动&网页日期控件操作(js操作)(五)》
②感谢存在在你眼里的《python+selenium 滚动条/内嵌滚动条循环下滑,判断是否滑到最底部》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-06-23 【CentOS7】之执行yum命令报错