web自动化,下拉滚动到底部/顶部和下拉滚动到指定的元素
在web自动化,经常会遇到页面显示内容太多的时候,页面就会出现滚动条,一般有两种方式进行下拉,一种是直接下拉到底部/顶部/中部,或者直接给定元素,直接下拉到指定元素的位置。
两种方式的共同点:
两种方式,都是通过selenium框架,执行js代码的方式来实现,只是传递的js代码不一样
self.driver.execute_script(js)
第一种:自定义直接下拉到顶部或底部,根据需要进行选择
滚动到底部:window.scrollTo(0, document.body.scrollHeight);
滚动到页面中间:window.scrollTo(0, document.body.scrollHeight/2);
滚动到页面顶部:window.scrollTo(0, document.body.scrollHeight/document.body.scrollHeight);
def scroll_to(self, type):
'''
移动浏览器的滚动条,滚动屏幕到百分比的位置
目前分为移动到末尾、移动到中间、移动到顶部。以及每次移动1/5,这种只能使用于浏览器的滚动条不在body里面,若有修改过滚动条的属性,无法进行下滑
:param type:
:return:
'''
if type == 'end':
# 移动到末尾
js = "window.scrollTo(0, document.body.scrollHeight);"
elif type == 'middle':
# 移动到中间
js = "window.scrollTo(0, document.body.scrollHeight/2);"
elif type == 'top':
# 移动到顶部
js = "window.scrollTo(0, document.body.scrollHeight/document.body.scrollHeight);"
else:
# 暂时设置移动 1/5
js = "window.scrollTo(0, document.body.scrollHeight/5);"
try:
self.driver.execute_script(js)
except Exception as e:
mylog.exception("scroll_to_移动屏幕到{0}失败,请检查{1}".format(type, e))
self.save_imgs(model=type)
raise
这种下滑方式在滚动条在body里面的时候,进行下滑会没响应
滚动条不在body里面,这个时候,执行下滑是正常的

当滚动条在body里面的时候,下滑操作就没反应了,这个时候,可以指定元素的位置,进行下滑操作

第二种:给定元素的位置,下滑到该元素的位置(建议使用!)
try:
self.driver.execute_script("arguments[0].scrollIntoView();", sroll_element)
except Exception as e:
mylog.exception("{0}_进行滚动屏幕_到{1}元素失败,请检查{2}".format(model, loc, e))
self.save_imgs(model)
raise
web自动化,下拉滚动到底部/顶部和下拉滚动到指定的元素的更多相关文章
- 移动端页面 弹出框滚动,底部body锁定,不滚动 / 微信网页禁止回弹效果
需求:页面有弹出层菜单,当弹出层菜单超出屏幕可视区域时,不能滚动.加上滚动后,底部body的滚动事件如何禁止,加上了overflow:hidden;还是不可用. 如下图:地区弹出框可以滚动,而底部的b ...
- vant list列表滚动到底部加载更多会滚动到顶部问题
如果使用异步加载数据并使用了vant中的toast做加载中提示,则有可能会导致列表滚动高度为0,也就是回到了顶部.只要在list加载回调里不使用toast就可以避免这个问题.
- 元素滚动到底部或顶部时阻止body滚动
移动端的弹窗内容有滚动条,滚动到底部或顶部时或影响弹窗下的body滚动,某些浏览器滚动到顶部时不松手就触发了刷新页面的情况,如果不需要这样的默认体验,就需要加一下判断了. var startX,sta ...
- Android 控制ScrollView滚动到底部或顶部
在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public static void scrollToBottom ...
- 安卓使ScrollView滚动到底部代码
在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public static void scrollToBottom ...
- Android 控制ScrollView滚动到底部
scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部 scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部 ...
- web自动化的三大等待
由于web网页打开后需要时间进行数据的传送,页面的渲染,所以我们在写web自动化脚本的时候,需要等待它加载完所有的页面元素,我们才进行操作或点击.同时这种等待也是为了提高脚本的稳定性. seleniu ...
- jQuery 滚动条 滚动到底部(下拉到底部) 加载数据(触发事件、处理逻辑)、分页加载数据
1.针对浏览器整个窗口滚动 主要代码: <script type="text/javascript"> ; function GetProductListPageFun ...
- 滚动到底部加载更多及下拉刷新listview的使用
最新内容建议直接访问原文:滚动到底部加载更多及下拉刷新listview的使用 本文主要介绍可同时实现下拉刷新及滑动到底部加载更多的ListView的使用. 该ListView优点包括:a. 可自定义下 ...
随机推荐
- 【编程思想】【设计模式】【创建模式creational】Pool
Python版 https://github.com/faif/python-patterns/blob/master/creational/pool.py #!/usr/bin/env python ...
- 【Java 调优】Java性能优化
Java性能优化的50个细节(珍藏版) 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: ...
- 莫烦python教程学习笔记——数据预处理之normalization
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 关于input单选框的radio属性
最近在做前端页面的时候遇到一个问题(后端php猴子前端不怎么写) 我写了一段代码: <form action=""> <label for=&quo ...
- ciscn_2019_es_1
拿到题目例行检查 将题目放到idax64中进行代码审计 主界面,我也没看懂什么意思 call 可以看到free的指针没有置零,存在uaf漏洞 add函数 show函数 该题的libc版本是2.27,所 ...
- Table.FirstN保留前面N….First…(Power Query 之 M 语言)
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...
- CF1481B New Colony 题解
Content \(n\) 座山排成一行,其中第 \(i\) 座山的高度为 \(h_i\). 有 \(k\) 个巨石依次从第一座山开始滚落.当某个巨石在第 \(i\) 座山时: 如果 \(i=n\), ...
- python enumerate枚举用法总结
enumerate()说明 enumerate()是python的内置函数enumerate在字典上是枚举.列举的意思对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumer ...
- /etc/resolv.conf文件中的search项作用;如何保持resolv.conf文件内容不被修改
/etc/resolv.conf文件中的search项作用 resolv.conf文件中有search项时,主机名解析规则顺序: DNS配置文件如下: # cat /etc/resolv.conf ; ...
- Discrete Logging(poj2417)
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5120 Accepted: 2319 ...