【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 滚动条/内嵌滚动条循环下滑,判断是否滑到最底部》
【Python自动化】之利用JS操作页面滚动条(新)的更多相关文章
- Python selenium webdriver设置js操作页面滚动条
js2 = "window.scrollTo(0,0);" #括号中为坐标 当不知道需要的滚动的坐标大小时: weizhi2 = driver.find_element_by_id ...
- python3 + selenium 使用 JS操作页面滚动条
js2 = "window.scrollTo(0,0);" #括号中为坐标 当不知道需要的滚动的坐标大小时: weizhi2 = driver.find_element_by_id ...
- Selenium with Python 005 - 调用js操作页面元素
WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...
- java selenium webdriver处理JS操作窗口滚动条
未经作者允许,禁止转载!!! java selenium webdriver处理JS操作窗口滚动条 java selenium webdriver处理JS操作窗口滚动条 import org.open ...
- 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变
查看本章节 查看作业目录 需求说明: 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变 当用户单击"+" ...
- 大神:python怎么爬取js的页面
大神:python怎么爬取js的页面 可以试试抓包看看它请求了哪些东西, 很多时候可以绕过网页直接请求后面的API 实在不行就上 selenium (selenium大法好) selenium和pha ...
- js介绍,js三种引入方式,js选择器,js四种调试方式,js操作页面文档DOM(修改文本,修改css样式,修改属性)
js介绍 js运行编写在浏览器上的脚本语言(外挂,具有逻辑性) 脚本语言:运行在浏览器上的独立的代码块(具有逻辑性) 操作BOM 浏览器对象盒子 操作DOM 文本对象 js三种引入方式 (1)行间式: ...
- F12修改html进行本地js操作页面元素
F12修改html进行本地js操作页面元素
- 前端(十二)—— JavaScript基础操作:if语句、for循环、while循环、for...in、for...of、异常处理、函数、事件、JS选择器、JS操作页面样式
JavaScript基础操作 一.分支结构 1.if语句 if 基础语法 if (条件表达式) { 代码块; } // 当条件表达式结果为true,会执行代码块:反之不执行 // 条件表达式可以为普通 ...
- 利用JS实现自定义滚动条
一般默认的滚动条会比较丑,我们可以用简单的js实现自定义滚动条的功能: 代码如下: <!doctype html> <html> <head> <meta c ...
随机推荐
- 超快的 Python 包管理工具「GitHub 热点速览」
天下武功,无坚不破,唯快不破! 要想赢得程序员的欢心,工具的速度至关重要.仅需这一优势,即可使其在众多竞争对手中脱颖而出,迅速赢得开发者的偏爱.以这款号称下一代极速 Python 包管理工具--uv ...
- 解决方案 | winrar 使用命令行解压到同名文件夹 (QTTabBar 中创建一个【解压文件】命令按钮的设置)
需求:我们经常需要把rar或者zip解压到当前文件夹,如果是直接解压的话可能会解压出来很多文件,事实上我们当然可以通过右键解压到这个指定文件夹. 但是 经过查询知道,如果是指定文件夹好说,直接指定.\ ...
- js 异步 任务 题目解析(chatgpt bug了?)
最近遇到一道题如下,求输出结果 感觉还是蛮有意思的,找chatgpt做了一下 我是题 async function async1(){ console.log('1'); await async2() ...
- Vscode 一次选中多行 光标一次定位多行
1 . 鼠标点击开始位置(定位到行首时,鼠标就点击第一行的行首:定位到行尾时,鼠标就点击第一行的行尾:) 2. 按住shift+alt 点击结束的位置(定位到行首时,鼠标就点击最后一行的行首:定位到 ...
- Docker Compose在Centos下的安装与卸载
实践环境 Centos7.8 先决条件 已安装Docker Engine 安装Docker Compose 运行以下命令下载稳定版本Docker Compose $ sudo curl -L &quo ...
- SpringBoot实战:Spring Boot接入Security权限认证服务
引言 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制的框架,提供了完善的认证机制和方法级的授权功能,是一个非常优秀的权限管理框架.其核心是一组过滤器链,不同的功能经由不 ...
- tcp udp测试
tcp udp测试 sub_udp.py #!/usr/bin/env python # -*- coding: utf-8 -*- # 可以正常接收udp import socket import ...
- 【MySQL】二级MySQL考试 救场帮助表
周六去考二级,应用第一题就是添加外键约束 草,写了半天老说语法不对,然后急中生智,觉得默认的库里应该有文档说明表 以下是SQL查询过程: -- 猜测是在mysql库里面 mysql> USE m ...
- blender建模渲染Tips
blender渲染 灯光的三种方式 1,常规灯光:shift+A选择灯光. 2,世界环境光:右侧地球图标调整. 3,物体自发光:把渲染物体变成一个发光体来进行调节灯光. 渲染视窗的调节 ctrl+b裁 ...
- Reinforcement 代码库
https://github.com/dragen1860?tab=repositories https://github.com/awjuliani?tab=repositories https:/ ...