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中的filter()函数的用法
Apr 27 Python
python抓取网页中图片并保存到本地
Dec 01 Python
Python使用面向对象方式创建线程实现12306售票系统
Dec 24 Python
Python3 处理JSON的实例详解
Oct 29 Python
Python实现合并两个列表的方法分析
May 28 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
Python使用paramiko操作linux的方法讲解
Feb 25 Python
python做接口测试的必要性
Nov 20 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
python反爬虫方法的优缺点分析
Nov 25 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循环获取GET和POST值的代码
2008/04/09 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
Python实现对adb命令封装
2020/03/06 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
物业工程部岗位职责
2015/02/11 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
Redis三种集群模式详解
2021/10/05 Redis
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS