Selenium 浏览器滚动条操作

在用selenium做WEB自动化时,经常会碰到要定位的元素不在当前屏,需要拖动浏览器的滚动条才能显示出来。如果直接去定位的话,一定会报元素不存在的错误。那么怎么对浏览器的滚动条进行操作呢?

webdriver不能定位到浏览器的滚动条,只有通过execute_script()来执行js脚本,达到操作滚动条的目的。

一、通过元素所在位置来拖动滚动条

这个方法是最常用的,它就好像我们人一样拖动滚动条用眼睛在页面上寻找需要的元素,一旦找到那个元素了,我就停止拖动。

代码:

# coding = utf-8
from selenium import webdriver
from time import sleep
# 驱动文件路径
driverfile_path = r‘D:\coship\Test_Framework\drivers\chromedriver.exe‘
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
driver.get(r‘https://www.autoitscript.com/site/autoit/downloads/‘)
driver.maximize_window()
driver.implicitly_wait(20)
# 描述元素的属性
target = driver.find_element_by_css_selector("img[title=‘Download AutoIt‘]")
# 执行js脚本,拖动浏览器滚动条到元素的位置
driver.execute_script("arguments[0].scrollIntoView();", target)
# 退出
sleep(5)
driver.quit()

二、Window.scrollTo()方法

scrollTo(xpos,ypos)

此方法可以把滚动条拖动到指定的坐标,其中xpos是横坐标,也就是对横滚动条进行操作;ypos是纵坐标,也就是对竖进度条进行操作

那么我们怎么能知道元素所在位置的坐标呢?先来介绍一个Chrome浏览器的插件: page ruler

安装插件后,打开谷歌浏览器,可以再右上角看到一把尺子的图标,点击尺子的图标,移动到元素的位置,就可以显示这个元素的坐标了,如图:

知道元素的坐标后,我们就可以拖动滚动条了。

代码:

# coding = utf-8
from selenium import webdriver
from time import sleep
# 驱动文件路径
driverfile_path = r‘D:\coship\Test_Framework\drivers\chromedriver.exe‘
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
driver.get(r‘https://www.autoitscript.com/site/autoit/downloads/‘)
driver.maximize_window()
driver.implicitly_wait(20)
# 调用JS代码拖动滚动条
driver.execute_script("window.scrollTo(0,1680)")
# 直接拖动到底部
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
# 拖动到顶部
driver.execute_script("window.scrollTo(0,0)")
# 退出
sleep(5)
driver.quit()

原文地址:https://www.cnblogs.com/eastonliu/p/9135141.html

时间: 2024-07-31 17:09:16

Selenium 浏览器滚动条操作的相关文章

selenium 浏览器基础操作(Python)

想要开始测试,首先要清楚测试什么浏览器.如何为浏览器安装驱动,前面已经聊过. 其次要清楚如何打开浏览器,这一点,在前面的代码中,也体现过,但是并未深究.下面就来聊一聊对浏览器操作的那些事儿. from selenium import webdriver from time import sleep #打开浏览器 driver = webdriver.Firefox() #打开网页 driver.get("https://www.baidu.com/") #设置当前浏览器宽高为200,3

Selenium-测试对象操作之:获取浏览器滚动条滚动距离

#encoding=utf-8from selenium import webdriverimport time,os driver = webdriver.Chrome() #打开网页 driver.get('https://www.baidu.com/') driver.maximize_window() #网页可视区高js = "var q=document.body.clientHeight;return(q)" Visual_area_height=driver.execut

python selenium webdriver处理浏览器滚动条

用键盘右下角的UP,DOWN按键来处理页面滚动条 这种方法很灵活用起来很方便!!!! from selenium import webdriver import time from selenium.webdriver.common.keys import Keys #访问百度 driver=webdriver.Chrome() driver.get("http://www.baidu.com") #搜索 driver.find_element_by_id("kw"

python下selenium模拟浏览器基础操作

1.安装及下载 selenium安装: pip install selenium  即可自动安装selenium geckodriver下载:https://github.com/mozilla/geckodriver/releases Chromedriver下载:http://npm.taobao.org/mirrors/chromedriver/ 2.保存路径 将下载好的geckodriver以及Chromedriver解压到桌面,打开我的电脑,找到Python文件夹中anancode文件

selenium基础(滚动条操作)

滚动条操作:当待操作的元素在页面可是区域外时,要将待操作的元素滚动到可视区域当中 步骤:1.先找要将要操作的元素element = driver.find_element_by_xxxx("XXXX") 2.再将元素滑动到可视区域:通过执行javaScript语句实现driver.execute_script("arguments[0].scrollIntoView();",element)#另外一种方式,scrollIntoViewIfneeded 3.再操作元素

RobotFramework操作浏览器滚动条

RF框架中操作浏览器滚动条,使用关键字:excute javascript 执行JS window.scrollTo(0,document.body.scrollHeight)  document.body.scrollHeight 表示滑到最底部 如果想要滑到具体那个位置,需要自己填写值,进行调试,获取自己想要拉到的位置,例如: Excute Javascript     window.scrollTo(0,50) 原文地址:https://www.cnblogs.com/liruxian/p

[python]利用selenium模拟用户操作抓取天猫评论数据

准备: python3.5 安装selenium包 第一种方法: cmd里输pip install selenium,但是经常报错 第二种方法: 下载安装包-cmd进入解压路径-python setup.py install-报错permission denied-右键安全更改报错文件夹权限为完全控制-再次安装成功unknown error: unable to discover open pages-下载chromedriver放在环境变量目录下测试自动打开百度时提示"您使用的是不受支持的命令

splinter python浏览器自动化操作,模拟浏览器的行为

Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没有更新了.还 有就是利用selenium,可支持多种浏览器.网上资料比较多.经过比较,我选择了Splinter模块,因为利用Splinter开发浏览器自动化操 作,编写代码比较简单. 一.Splinter的安装 Splinter的使用必修依

selenium_webdriver(python)控制浏览器滚动条

调过JS脚本控制 #coding=utf-8 from selenium import webdriver import time #访问百度 driver=webdriver.Firefox() driver.get("http://www.baidu.com") #搜索 driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("s