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 相关文章推荐
在Django框架中编写Contact表单的教程
Jul 17 Python
Python中return语句用法实例分析
Aug 04 Python
Python线程创建和终止实例代码
Jan 20 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
Jun 24 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
python中的colorlog库使用详解
Jul 05 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
wxPython实现带颜色的进度条
Nov 19 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 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实现的CSS更新类实例
2014/09/22 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
php中JSON的使用与转换
2015/01/14 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
整理Python 常用string函数(收藏)
2016/05/30 Python
pybind11在Windows下的使用教程
2019/07/04 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
资深财务管理人员自我评价
2013/09/22 职场文书
质检部职责
2013/12/28 职场文书
宿舍违规检讨书
2014/01/12 职场文书
护士个人自我鉴定
2014/03/24 职场文书
《穷人》教学反思
2014/04/08 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
商场收银员岗位职责
2015/04/07 职场文书
运动员入场前导词
2015/07/20 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫