如何操作页面中的滚动条,有以下几个方法:

一、查找可见元素进行滚动页面(通用)

方法一:

①移动到元素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操作页面滚动条(新)的更多相关文章

  1. Python selenium webdriver设置js操作页面滚动条

    js2 = "window.scrollTo(0,0);" #括号中为坐标 当不知道需要的滚动的坐标大小时: weizhi2 = driver.find_element_by_id ...

  2. python3 + selenium 使用 JS操作页面滚动条

    js2 = "window.scrollTo(0,0);" #括号中为坐标 当不知道需要的滚动的坐标大小时: weizhi2 = driver.find_element_by_id ...

  3. Selenium with Python 005 - 调用js操作页面元素

    WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...

  4. java selenium webdriver处理JS操作窗口滚动条

    未经作者允许,禁止转载!!! java selenium webdriver处理JS操作窗口滚动条 java selenium webdriver处理JS操作窗口滚动条 import org.open ...

  5. 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变

    查看本章节 查看作业目录 需求说明: 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变 当用户单击"+" ...

  6. 大神:python怎么爬取js的页面

    大神:python怎么爬取js的页面 可以试试抓包看看它请求了哪些东西, 很多时候可以绕过网页直接请求后面的API 实在不行就上 selenium (selenium大法好) selenium和pha ...

  7. js介绍,js三种引入方式,js选择器,js四种调试方式,js操作页面文档DOM(修改文本,修改css样式,修改属性)

    js介绍 js运行编写在浏览器上的脚本语言(外挂,具有逻辑性) 脚本语言:运行在浏览器上的独立的代码块(具有逻辑性) 操作BOM 浏览器对象盒子 操作DOM 文本对象 js三种引入方式 (1)行间式: ...

  8. F12修改html进行本地js操作页面元素

    F12修改html进行本地js操作页面元素

  9. 前端(十二)—— JavaScript基础操作:if语句、for循环、while循环、for...in、for...of、异常处理、函数、事件、JS选择器、JS操作页面样式

    JavaScript基础操作 一.分支结构 1.if语句 if 基础语法 if (条件表达式) { 代码块; } // 当条件表达式结果为true,会执行代码块:反之不执行 // 条件表达式可以为普通 ...

  10. 利用JS实现自定义滚动条

    一般默认的滚动条会比较丑,我们可以用简单的js实现自定义滚动条的功能: 代码如下: <!doctype html> <html> <head> <meta c ...

随机推荐

  1. 【VMware vSAN】vSAN Data Protection Part 1:安装部署。

    VMware vSAN 8 U3 中新引入了基于 vSAN ESA 的全新 vSAN Data Protection 功能,借助 vSAN Data Protection 功能,您可以使用在 vSAN ...

  2. Mac下Eclipse打不开了怎么办

    其实这个问题能搜到很多答案,但是对我有效的只有下面这一种. 背景 我需要使用到Eclipse,就下载了它的特定版本,用于开发RAP的. 连续两次都是使用后关闭,就再也打不开了. 选定的解决方案 试了好 ...

  3. Nunjucks

    Nunjucks是什么东东?其实它是一个模板引擎. 那什么是模板引擎? 模板引擎就是基于模板配合数据构造出字符串输出的一个组件.比如下面的函数就是一个模板引擎: function examResult ...

  4. 洛谷P5020

    水一道绿题... #include<iostream> #include<utility> #include<algorithm> using namespace ...

  5. redis-sort排序

    sort命令可以对列表(lpush rpush).集合(sadd srem).有序集合(zadd)进行排序 1.复习一下三种数据结构(1)列表 lpush  key val1 val2 val3 .. ...

  6. [oeasy]python0070_ 字体样式_下划线_中划线_闪动效果_反相_取消效果

    字体样式 回忆上次内容 m 可以改变字体样式 0-10 之间设置的都是字体效果 0 复原 1 变亮 2 变暗 从3到10 又是什么效果 呢?? 真的可以blink闪烁吗? 3m 3m 实现斜体字的效果 ...

  7. SQL Server 锁(LOCK)大全

    一.锁(LOCK)知识及应用 1.1 锁的基础知识 在任何多用户的数据库中,必须有一套用于数据修改的一致的规则.对于真正的事务处理型数据库,当两个不同的进程试图同时修改同一份数据时,数据库管理系统(D ...

  8. 数组的创建-数组-C

    数组内存是连续的 数组是一个整体,它的内存是连续的:也就是说,数组元素之间是相互挨着的,彼此之间没有一点点缝隙.下图演示了int a[4];在内存中的存储情形: 「数组内存是连续的」这一点很重要,所以 ...

  9. CF1883B Chemistry 题解

    原题传送门 思路: 如"aba","abba"这样的回文字符串, 每个字符的出现次数有以下两种情况: 1:全部是偶数(abba) 2:只有一个为奇数(aba) ...

  10. ABC348

    A link 这道题就先输出整个的\(oox\),再输出剩一个两个的. 点击查看代码 #include<bits/stdc++.h> using namespace std; int n; ...