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获取赶集网招聘信息前篇
Apr 18 Python
利用Python如何生成随机密码
Apr 20 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
Django框架模板文件使用及模板文件加载顺序分析
May 23 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
Django2 连接MySQL及model测试实例分析
Dec 10 Python
TensorFLow 变量命名空间实例
Feb 11 Python
pycharm运行程序时看不到任何结果显示的解决
Feb 21 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 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
给多个地址发邮件的类
2006/10/09 PHP
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
PHP7常量数组用法分析
2016/09/26 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
浅谈python中set使用
2016/06/30 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
大学生就业自荐信
2013/10/26 职场文书
水利水电专业自荐信
2014/07/08 职场文书
公司业务员管理制度
2015/08/05 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis