【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 ...
随机推荐
- 【VMware vSAN】vSAN Data Protection Part 1:安装部署。
VMware vSAN 8 U3 中新引入了基于 vSAN ESA 的全新 vSAN Data Protection 功能,借助 vSAN Data Protection 功能,您可以使用在 vSAN ...
- Mac下Eclipse打不开了怎么办
其实这个问题能搜到很多答案,但是对我有效的只有下面这一种. 背景 我需要使用到Eclipse,就下载了它的特定版本,用于开发RAP的. 连续两次都是使用后关闭,就再也打不开了. 选定的解决方案 试了好 ...
- Nunjucks
Nunjucks是什么东东?其实它是一个模板引擎. 那什么是模板引擎? 模板引擎就是基于模板配合数据构造出字符串输出的一个组件.比如下面的函数就是一个模板引擎: function examResult ...
- 洛谷P5020
水一道绿题... #include<iostream> #include<utility> #include<algorithm> using namespace ...
- redis-sort排序
sort命令可以对列表(lpush rpush).集合(sadd srem).有序集合(zadd)进行排序 1.复习一下三种数据结构(1)列表 lpush key val1 val2 val3 .. ...
- [oeasy]python0070_ 字体样式_下划线_中划线_闪动效果_反相_取消效果
字体样式 回忆上次内容 m 可以改变字体样式 0-10 之间设置的都是字体效果 0 复原 1 变亮 2 变暗 从3到10 又是什么效果 呢?? 真的可以blink闪烁吗? 3m 3m 实现斜体字的效果 ...
- SQL Server 锁(LOCK)大全
一.锁(LOCK)知识及应用 1.1 锁的基础知识 在任何多用户的数据库中,必须有一套用于数据修改的一致的规则.对于真正的事务处理型数据库,当两个不同的进程试图同时修改同一份数据时,数据库管理系统(D ...
- 数组的创建-数组-C
数组内存是连续的 数组是一个整体,它的内存是连续的:也就是说,数组元素之间是相互挨着的,彼此之间没有一点点缝隙.下图演示了int a[4];在内存中的存储情形: 「数组内存是连续的」这一点很重要,所以 ...
- CF1883B Chemistry 题解
原题传送门 思路: 如"aba","abba"这样的回文字符串, 每个字符的出现次数有以下两种情况: 1:全部是偶数(abba) 2:只有一个为奇数(aba) ...
- ABC348
A link 这道题就先输出整个的\(oox\),再输出剩一个两个的. 点击查看代码 #include<bits/stdc++.h> using namespace std; int n; ...