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的urllib模块显示下载进度示例
Jan 17 Python
Python解释执行原理分析
Aug 22 Python
python实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
利用python代码写的12306订票代码
Dec 20 Python
深入理解Python中的内置常量
May 20 Python
Python模拟登陆实现代码
Jun 14 Python
基于python socketserver框架全面解析
Sep 21 Python
python简单操作excle的方法
Sep 12 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
Python json读写方式和字典相互转化
Apr 18 Python
Python爬虫爬取有道实现翻译功能
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
解析php中memcache的应用
2013/06/18 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
JavaScript模板入门介绍
2012/09/26 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
wxPython窗口中文乱码解决方法
2014/10/11 Python
python实现发送邮件及附件功能
2021/03/02 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
家居饰品店创业计划书
2014/01/31 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
银行办公室岗位职责
2014/03/10 职场文书
小学运动会口号
2014/06/07 职场文书
个人创业事迹材料
2014/12/30 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
Python Pandas常用函数方法总结
2021/06/15 Python
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫