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下的Mysql模块MySQLdb安装详解
Apr 09 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
用matplotlib画等高线图详解
Dec 14 Python
Django rest framework基本介绍与代码示例
Jan 26 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
解决pycharm界面不能显示中文的问题
May 23 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
python框架flask表单实现详解
Nov 04 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
pandas处理csv文件的方法步骤
Oct 16 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
世界收音机发展史
2021/03/01 无线电
php实现的在线人员函数库
2008/04/09 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
JScript中的"this"关键字使用方式补充材料
2007/03/08 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
在Python中使用正则表达式的方法
2015/08/13 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
深入解析神经网络从原理到实现
2019/07/26 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
联强国际笔试题面试题
2013/07/10 面试题
会议主持词
2014/03/17 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
遗嘱范文
2015/08/07 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python