在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自动化,下拉滚动到底部/顶部和下拉滚动到指定的元素的更多相关文章

  1. 移动端页面 弹出框滚动,底部body锁定,不滚动 / 微信网页禁止回弹效果

    需求:页面有弹出层菜单,当弹出层菜单超出屏幕可视区域时,不能滚动.加上滚动后,底部body的滚动事件如何禁止,加上了overflow:hidden;还是不可用. 如下图:地区弹出框可以滚动,而底部的b ...

  2. vant list列表滚动到底部加载更多会滚动到顶部问题

    如果使用异步加载数据并使用了vant中的toast做加载中提示,则有可能会导致列表滚动高度为0,也就是回到了顶部.只要在list加载回调里不使用toast就可以避免这个问题.

  3. 元素滚动到底部或顶部时阻止body滚动

    移动端的弹窗内容有滚动条,滚动到底部或顶部时或影响弹窗下的body滚动,某些浏览器滚动到顶部时不松手就触发了刷新页面的情况,如果不需要这样的默认体验,就需要加一下判断了. var startX,sta ...

  4. Android 控制ScrollView滚动到底部或顶部

    在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public static void scrollToBottom ...

  5. 安卓使ScrollView滚动到底部代码

    在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public static void scrollToBottom ...

  6. Android 控制ScrollView滚动到底部

    scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部 scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部 ...

  7. web自动化的三大等待

    由于web网页打开后需要时间进行数据的传送,页面的渲染,所以我们在写web自动化脚本的时候,需要等待它加载完所有的页面元素,我们才进行操作或点击.同时这种等待也是为了提高脚本的稳定性. seleniu ...

  8. jQuery 滚动条 滚动到底部(下拉到底部) 加载数据(触发事件、处理逻辑)、分页加载数据

    1.针对浏览器整个窗口滚动 主要代码: <script type="text/javascript"> ; function GetProductListPageFun ...

  9. 滚动到底部加载更多及下拉刷新listview的使用

    最新内容建议直接访问原文:滚动到底部加载更多及下拉刷新listview的使用 本文主要介绍可同时实现下拉刷新及滑动到底部加载更多的ListView的使用. 该ListView优点包括:a. 可自定义下 ...

随机推荐

  1. 【编程思想】【设计模式】【创建模式creational】Pool

    Python版 https://github.com/faif/python-patterns/blob/master/creational/pool.py #!/usr/bin/env python ...

  2. 【Java 调优】Java性能优化

    Java性能优化的50个细节(珍藏版) 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: ...

  3. 莫烦python教程学习笔记——数据预处理之normalization

    # View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...

  4. 关于input单选框的radio属性

    最近在做前端页面的时候遇到一个问题(后端php猴子前端不怎么写) 我写了一段代码: <form action="">        <label for=&quo ...

  5. ciscn_2019_es_1

    拿到题目例行检查 将题目放到idax64中进行代码审计 主界面,我也没看懂什么意思 call 可以看到free的指针没有置零,存在uaf漏洞 add函数 show函数 该题的libc版本是2.27,所 ...

  6. Table.FirstN保留前面N….First…(Power Query 之 M 语言)

    数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...

  7. CF1481B New Colony 题解

    Content \(n\) 座山排成一行,其中第 \(i\) 座山的高度为 \(h_i\). 有 \(k\) 个巨石依次从第一座山开始滚落.当某个巨石在第 \(i\) 座山时: 如果 \(i=n\), ...

  8. python enumerate枚举用法总结

    enumerate()说明 enumerate()是python的内置函数enumerate在字典上是枚举.列举的意思对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumer ...

  9. /etc/resolv.conf文件中的search项作用;如何保持resolv.conf文件内容不被修改

    /etc/resolv.conf文件中的search项作用 resolv.conf文件中有search项时,主机名解析规则顺序: DNS配置文件如下: # cat /etc/resolv.conf ; ...

  10. Discrete Logging(poj2417)

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5120   Accepted: 2319 ...