python + selenium + Js 处理轮动条
selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。
常见场景:
当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。
这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。
滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,
这时候只能借助J了,还好selenium提供了一个操作js的方法:
execute_script(),可以直接执行js的脚本。
一、JavaScript简介
1.JavaScript是世界上最流行的脚本语言,因为你在电脑、手机、平板上浏览的所有的网页,
以及无数基于HTML5的手机App,交互逻辑都是由JavaScript驱动的。简单地说,
JavaScript是一种运行在浏览器中的解释型的编程语言。
那么问题来了,为什么我们要学JavaScript?
2.有些特殊的操作selenium2+python无法直接完成的,JS刚好是这方面的强项,所以算是一个很
好的补充。对js不太熟悉的,可以网上找下教程,简单了解些即可。
http://www.runoob.com/js/js-tutorial.html
二、控制滚动条高度
1.滚动条回到顶部:
js="var q=document.getElementById(‘id‘).scrollTop=0"
driver.execute_script(js)
2.滚动条拉到底部
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
3.这里可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部。
版权所有,微信公众号:软件测试部落
三、横向滚动条
1.有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)。
2.通过左边控制横向和纵向滚动条scrollTo(x, y)js = "window.scrollTo(100,400);"
driver.execute_script(js)
3.第一个参数x是横向距离,第二个参数y是纵向距离
四、Chrome浏览器
1.以上方法在Firefox上是可以的,但是用Chrome浏览器,发现不管用。
谷歌浏览器就是这么任性,不听话,于是用以下方法解决谷歌浏览器滚动条的问题。
2.Chrome浏览器解决办法:
js = "var q=document.body.scrollTop=0"
driver.execute_script(js)
五、元素聚焦
1.虽然用上面的方法可以解决拖动滚动条的位置问题,但是有时候无法确定我需要操作的元素
在什么位置,有可能每次打开的页面不一样,元素所在的位置也不一样,怎么办呢?
2.这个时候我们可以先让页面直接跳到元素出现的位置,然后就可以操作了。同样需要借助JS去实现。
3.元素聚焦:
target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)
六、获取浏览器名称:driver.name
1.为了解决不同浏览器操作方法不一样的问题,可以写个函数去做兼容。
2.先用driver.name获取浏览器名称,然后用if语句做个判断
七、兼容性
1.兼容谷歌和firefox/IE
1
|
八、参考代码如下:
# coding:utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get("https://www.baidu.com") print driver.name # 回到顶部 def scroll_top(): if driver.name == "chrome": js = "var q=document.body.scrollTop=0" else: js = "var q=document.documentElement.scrollTop=0" return driver.execute_script(js) # 拉到底部 def scroll_foot(): if driver.name == "chrome": #chrome 使用该方式 js = "var q=document.body.scrollTop=10000" else: #其他浏览器使用这种方式 js = "var q=document.documentElement.scrollTop=10000" return driver.execute_script(js) # 聚焦元素 target = driver.find_element_by_xxxx() driver.execute_script("arguments[0].scrollIntoView();", target)
JS功能还是很强大的,它还可以处理富文本、内嵌滚动条的问题。
转载于:https://www.cnblogs.com/Skyyj/p/7275938.html
python + selenium + Js 处理轮动条相关推荐
- 邢不行 | Python量化 + 数字货币 + 轮动 = 4年1000倍【附代码】
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. 年前抱团股涨的最猛的时候,很多人很焦虑. 没上车的 ...
- jquery.slimscroll.min.js轮动条插件
引用: <script src="js/jquery.min.js"></script> <script src="js/jquery. ...
- python时间控件readonly属性_人生苦短,我学python之python+selenium js处理日历控件(修改readonly属性)...
转载于 上海-悠悠的博客 前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性 ...
- python selenium 小知识点整理笔记(更新中...)
1.python selenium 获取JS中返回的变量值: # 获取某节点中返回的子节点长度 clsroomNum = self.driver.execute_script("return ...
- 【Python + Selenium】之JS定位总结
1.滚动条 driver.set_window_size(500,500) js = "window.scrollTo(0,200)" #左:距左边横滚.右:距上边竖滚 drive ...
- 抱团股会一直涨?无脑执行大小盘轮动策略,轻松跑赢指数5倍【附Python代码】
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. 前言: 巴蛇吞象,扬州跨鹤.人性之贪婪,逝者如此, ...
- [Tushare+Python] AH股轮动策略基础
[Tushare+Python] AH股轮动策略基础 摘要:为做AH股轮动策略需进行基础数据处理,这里代码主要涉及AH溢价计算及相关数据清洗. 文章目录 [Tushare+Python] AH股轮动策 ...
- python selenium 用js删除 readonly属性
当我们想在输入框 是日期类型,并send_keys 的时候发现不能输入,要么你搞日历这个很麻烦, 还有一个方法用js,非常简单 selenium+python操作js页面,删除某个元素 例子如下:删除 ...
- PYTHON SELENIUM运用execute_script(JS)选择页面下拉框在输入框输入值
By Mejias 网上有很多教程使用SELENIUM去操作页面下拉框并选中,比如Select(web element).select_by_value(option).也有使用selenium对输入 ...
最新文章
- PHP全栈开发(八):CSS Ⅸ dispaly visibility
- Javascript数组常见的方法
- 【解决办法】read_csv()第一列作为index
- 最佳拟合直线_JAVA
- VTK:小部件之AngleWidget2D
- 1900美元,你想要机器女朋友,还是想要女朋友?
- 平稳序列的预测和拟合之单位根检验
- (59)FPGA面试题-什么是有限的状态机?有限状态机可分为几类,分别是什么?
- 算法导论6:排序小结和最值取法 2016.1.6
- C语言判断四个嫌疑犯问题,C语言谁是窃贼问题代码及解析
- (ECCV-2020)步态横向网络-GLN
- 不同时区时间换算_世界时区划分时差在线查询计算_时间换算器
- Docker基础25--5.6 配置docker远程服务
- 移动GIS开发:手机基站定位+离线切片地图(矢量vtpk+栅格tpk)导航安卓APP
- struck(结构化SVM用于视觉跟踪)--源代码详解--main.cpp
- Beta冲刺第二周王者荣耀交流协会第五次会议
- d3.js v5 数据加载
- java中Date的getTime()函数
- vue移动端使用手势库---alloytinger
- golang学习之 go 读写 txt