Selenium及python实现滚动操作多种方法


Posted in Python onJuly 21, 2020

selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。

  当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。

这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。滚动条是无法直接用定位工具来定位的。

selenium里面也没有直接的方法去控制滚动条,这时候只能借助J了,还好selenium提供了一个操作js的方法:execute_script(),可以直接执行js的脚本。

方法一:使用js脚本直接操作

# 滚动到顶部
  def scroll_top(self):
    if self.driver.name == "Chrome":
      js = "var q=document.body.scrollTop=0"
    else:
      js = "var q=document.documentElement.scrollTop=0"
    return self.driver.execute_script(js)

  # 滚动到底部
  def scroll_foot(self):
    if self.driver.name == "Chrome":
      js = "var q=document.body.scrollTop=1000"
    else:
      js = "var q=document.documentElement.scrollTop=1000"
    return self.driver.execute_script(js)

或者:

js="var q=document.getElementById('***').scrollTop=10000"
driver.execute_script(js)

这里的id为滚动条的id,但js中没有xpath的方法,所以滚动条没有id的网页此方法不适用

上面展示的是上下方向的滚动条,接下来介绍左右方向的滚动条的操作方法

#左右方向的滚动条可以使用window.scrollTo(左边距,上边距)方法
#example
js="window.scrollTo(200,1000)"
driver.execute_script(js)

方法二:使用 js 脚本拖动到指定位置

target = driver.find_element_by_id("***")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去

该方法可以将滚动条拖动到需要显示的元素位置,此方法用途比较广

方法三:根据页面显示进行变通,发送tab键

比如,密码是输入框,正常手工操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("****").send_keys(Keys.TAB)

方法四:

scrollTo函数

--scrollHeight 获取对象的滚动高度。

--scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。

--scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。

--scrollWidth 获取对象的滚动宽度

#滚动到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)
#滚动到顶部
js = "window.scrollTo(0,0)"
driver.execute_script(js)

其他:

robotframe work框架中,selenium2library里面有一个非常好用的功能Focus,会自动定位到元素。

Selenium及python实现滚动操作多种方法

代码块

driver.find_element_by_xpath("//div[@id='search']/div/span/input").click()
target = driver.find_element_by_id("_easyui_tree_17")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去
driver.find_element_by_xpath("//span[@class='tree-title'][text()='专业测试.修改后/123456']").click()

此方法与我们在python自己写的方法二)一致,工具给我们做了封装。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
开源软件包和环境管理系统Anaconda的安装使用
Sep 04 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
python实现log日志的示例代码
Apr 28 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
python 使用建议与技巧分享(四)
Aug 18 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 31 Python
如何在mac版pycharm选择python版本
Jul 21 #Python
python如何变换环境
Jul 21 #Python
零基础学Python之前需要学c语言吗
Jul 21 #Python
Python常驻任务实现接收外界参数代码解析
Jul 21 #Python
python中np是做什么的
Jul 21 #Python
从python读取sql的实例方法
Jul 21 #Python
python3.7调试的实例方法
Jul 21 #Python
You might like
php中文字符截取防乱码
2008/03/28 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
python中pickle模块浅析
2020/12/29 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
好的自荐信的要求
2013/10/30 职场文书
高校毕业生登记表自我鉴定
2013/11/03 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
国际贸易系求职信
2014/08/09 职场文书
毕业证委托书范文
2014/09/26 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
python中if和elif的区别介绍
2021/11/07 Python
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL
Mysql数据库group by原理详解
2022/07/07 MySQL
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python