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 31 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
一行python实现树形结构的方法
Aug 09 Python
Python爬虫使用代理IP的实现
Oct 27 Python
django框架auth模块用法实例详解
Dec 10 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
python解压zip包中文乱码解决方法
Nov 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
python操作 hbase 数据的方法
2016/12/18 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
python实现外卖信息管理系统
2018/01/11 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
python模糊图片过滤的方法
2018/12/14 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
详解python深浅拷贝区别
2019/06/24 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
pytorch简介
2020/11/11 Python
用Python 执行cmd命令
2020/12/18 Python
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
结婚喜宴家长答谢词
2014/01/15 职场文书
村干部培训方案
2014/05/02 职场文书
经典团队口号
2014/06/06 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis