python中selenium操作下拉滚动条的几种方法汇总


Posted in Python onJuly 14, 2019

UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等;但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了。

比如下面这样一个网页,需要进行拖动下拉条后才能通过selenium找到密码输入框的元素,

python中selenium操作下拉滚动条的几种方法汇总

python中selenium操作下拉滚动条的几种方法汇总

在python中有几种方法解决这种问题,简单介绍下,给需要的人:

方法一)使用js脚本直接操作,方法如下:

js="var q=document.getElementById('id').scrollTop=10000"
driver.execute_script(js)

或:

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

这里的id为滚动条的id,但js中没有xpath的方法,所以滚动条没有id的网页此方法不适用

方法二)使用js脚本拖动到提定地方

target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去

这个方法可以将滚动条拖动到需要显示的元素位置,此方法用途比较广,可以使用

方法三)根据页面显示进行变通,发送tab键

在本例中的页面中,密码是输入框,正常手工操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)

update

前段时间使用robotframe work框架时,selenium2library里面有一个非常好用的功能Focus,会自动定位到元素,研读一下源码:

def focus(self, locator):
    """Sets focus to element identified by `locator`."""
    element = self._element_find(locator, True, True)
    self._current_browser().execute_script("arguments[0].focus();", element)

从源码中我们可以看到,此方法与我们在python自己写的方法二)一致,工具给我们做了封装。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
解决python写的windows服务不能启动的问题
Apr 15 Python
简单介绍Python中的readline()方法的使用
May 24 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
Django 配置多站点多域名的实现步骤
May 17 Python
使用python 写一个静态服务(实战)
Jun 28 Python
python dict乱码如何解决
Jun 07 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
Python如何将装饰器定义为类
Jul 30 Python
Python扫描端口的实现
Jan 25 Python
Python Numpy之linspace用法说明
Apr 17 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 #Python
Python实现Selenium自动化Page模式
Jul 14 #Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 #Python
python基于Selenium的web自动化框架
Jul 14 #Python
Django项目使用CircleCI的方法示例
Jul 14 #Python
Python实现最常见加密方式详解
Jul 13 #Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 #Python
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
JavaScript DOM 添加事件
2009/02/14 Javascript
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
Augularjs-起步详解
2016/07/08 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
python多进程共享变量
2016/04/06 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
python之生产者消费者模型实现详解
2019/07/27 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
青年文明号口号
2014/06/17 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
公司费用报销管理制度
2015/08/04 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技