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获取文件扩展名的方法
Jul 06 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
Django模板Templates使用方法详解
Jul 19 Python
python获取Linux发行版名称
Aug 30 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
Oct 28 Python
python 实现提取log文件中的关键句子,并进行统计分析
Dec 24 Python
Python类反射机制使用实例解析
Dec 30 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
python通过matplotlib生成复合饼图
Feb 06 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 imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
php中cookie的使用方法
2014/03/29 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
Python制作数据导入导出工具
2015/07/31 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
python递归实现快速排序
2018/08/18 Python
python redis 删除key脚本的实例
2019/02/19 Python
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
大学生职业规划前言模板
2013/12/27 职场文书
《落花生》教学反思
2014/02/25 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
动员大会主持词
2014/03/20 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
中华魂演讲稿
2014/05/13 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
小学元宵节活动总结
2015/02/06 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
关于保护环境的建议书
2019/06/24 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书