selenium--浏览器滚动条操作
前戏
在进行web自动化的时候,selenium只能找当前屏幕上的标签,如果标签在当前页面没显示下,需要拖动滚动条才能查看到这个元素,这时候就要操作浏览器的滚动条,让当前页面显示这个元素才可以操作,在我之前做web自动化的时候,也找了很多的操作浏览器的方法,有些由于浏览器或者版本的问题已经使用不了了,所以下面的方法大家自己去尝试。
设置滚动条距离顶部的位置
from selenium import webdriver driver = webdriver.Chrome()
driver.get('xxx')
js = 'var action=document.documentElement.scrollTop=10000'
# 设置滚动条距离顶部的位置,设置为 10000, 超过10000就是最底部
driver.execute_script(js) # 执行脚本 js = 'var action=document.documentElement.scrollTop=0' # 回到顶部 driver.execute_script(js)
driver.quit()
使用js的scrollTo函数
from selenium import webdriver
import unittest, time class TestDemo(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome() def test_scroll(self):
url = 'http://www.seleniumhq.org/'
try:
self.driver.get(url) # 使用js的scrollTo函数和document.body.scrollHeight参数
# 将页面的滚动条滑动到页面的最下方
self.driver.execute_script('window.scrollTo(1000,document.body.scrollHeight);') # 使用js的scrollIntoView函数将遮挡的元素滚动到可见屏幕上
# scrollIntoView(true)表示将元素滚动到屏幕中间
# scrollIntoView(false)表示将元素滚动到屏幕底部
self.driver.execute_script("document.getElementById('choice').scrollIntoView(true);")
self.driver.execute_script("document.getElementById('choice').scrollIntoView(false);")
time.sleep(3) # 使用js的scrollBy方法,使用0和400横纵坐标参数,
# 将屏幕向下滚动400像素
self.driver.execute_script('window.scrrollBy(0,400);')
time.sleep(3)
except Exception as e:
print(e) def tearDown(self):
self.driver.quit() if __name__ == '__main__':
unittest.main()
横向滚动条
在web自动化中,不只只有纵向滚动条,可能还有横线滚动条
js ="window.scrollTo(100,400);"
driver.execute_script(js) # 第一个参数 x 是横向距离,第二个参数 y 是纵向距离
以上方法在 Firefox 上是可以的,但是用 Chrome 浏览器,发现不管用。谷歌浏览器就是这么任性,不听话,于是用以下方法解决谷歌浏览器滚动条的问题。
js = "var q=document.body.scrollTop=0"
driver.execute_script(js)
元素聚焦
虽然用上面的方法可以解决拖动滚动条的位置问题,但是有时候无法确定我需要操作的元素,这个时候我们可以先让页面直接跳到元素出现的位置,然后就可以操作了。同样需要借助 JS 去实现
target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)
以上方法大家可以自己进行尝试,试试哪种方法自己可以用
selenium--浏览器滚动条操作的更多相关文章
- python+selenium之浏览器滚动条操作
from selenium import webdriver import time #访问百度 driver=webdriver.Ie() driver.get("http://www.b ...
- selenium 浏览器基础操作(Python)
想要开始测试,首先要清楚测试什么浏览器.如何为浏览器安装驱动,前面已经聊过. 其次要清楚如何打开浏览器,这一点,在前面的代码中,也体现过,但是并未深究.下面就来聊一聊对浏览器操作的那些事儿. from ...
- selenium 右侧滚动条操作
对于web上有右侧滚动条的操作 可用使用JS语句执行 拖到底部 js = "var q=document.documentElement.scrollTop=10000"brows ...
- selenium 浏览器的操作
一.浏览器的最大化 #coding=utf-8 from selneium import wbedriver driver = wbedriver.Firefox() #将webdriver 的Fir ...
- selenium python 一些操作和定位收集
(—)滚动条操作 python中selenium操作下拉滚动条方法汇总 selenium_webdriver(python)控制浏览器滚动条 selenium+Python(select定位) Sel ...
- selenium+Python(Js处理浏览器滚动条)
控制浏览器滚动条 有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助 js 是来进行操作.一般用到操作滚动条的会两个场景: 注册时的法律条文需要阅读,判断用户是否阅读 ...
- RobotFramework操作浏览器滚动条
RobotFramework操作浏览器滚动条 (2016-12-21 11:52:43) 转载▼ 标签: selenium it 分类: 自动化测试 其实只要是用多了selenium+webdrive ...
- 通过selenium控制浏览器滚动条
目的:通过selenium控制浏览器滚动条 原理:通过 driver.execute_script()执行js代码,达到目的 driver.execute_script("window.sc ...
- python selenium webdriver处理浏览器滚动条
用键盘右下角的UP,DOWN按键来处理页面滚动条 这种方法很灵活用起来很方便!!!! from selenium import webdriver import time from selenium. ...
- selenium - Js处理滚动条操作
# 11.Js处理滚动条操作 driver.execute_script('arguments[0].scrollIntoView();',target) target 为find_element_b ...
随机推荐
- layui.dropdown.js
前 在 layui 框架下做了一个小组件,是下拉框功能,当然也可以很好的变成其他组件,前提你会修改. 还需要更多的完善.后期(我也不清楚会是啥时候会优化)
- Java8 新特性 Optional 类
Optional 类的简介 Optional类的是来自谷歌Guava的启发,然后就加入到Java8新特性中去了.Optional类主要就是为子决解价值亿万的错误,空指针异常. Optional ...
- SQL --------------- 运算符 = 与 in
in 用于指定查询与where 一块进行使用,可以用来指定一个或多个,和 “ = ” 差不多 语法: select * from 表名 where 字段 in (字段对应的值可以是一个或多个) 建个表 ...
- CentOS7部署vsftpd服务
1.查看是否已经安装了vsftpd vsftpd -version 2.安装vsftpd(CentOS7) yum install -y vsftpd 3.新建FTP目录 创建的FTP目录如下: /d ...
- 初次用R的实际案例数据分析
这是一次教授布置的期末作业,也是书籍<商务数据分析与应用>的一个课后作业 目录 数据描述 数据预处理 描述性统计分析 模型分析(方差分析) 数据描述 非学位职业培训机构的178个学员的数据 ...
- secure-file-priv特性
转载自:https://segmentfault.com/a/1190000009333563 当出现:1290 - The MySQL server is running with the --se ...
- 《 .NET并发编程实战》阅读指南 - 第7章
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- 使用Redis实现中英文自动补全功能详解
1.Redis自动补全功能介绍: Redis可以帮我们实现很多种功能,今天这里着重介绍的是Redis的自动补全功能的实现.我们使用有序集合,并score都为0,这样就按元素值的字典序排序.然后我们 ...
- 2019-11-29-C#-直接创建多个类和使用反射创建类的性能
原文:2019-11-29-C#-直接创建多个类和使用反射创建类的性能 title author date CreateTime categories C# 直接创建多个类和使用反射创建类的性能 li ...
- Layui 时间转换时间戳
我比较喜欢用Layui,当然也遇到一些坑!例如:绑定时间的时候是那种 是这种13位数据的日期,如果不经过转换是不能正常显示的,当然这是我遇到的问题不知道你们有没有遇到,后来我也是经过了解才知道怎么回事 ...