博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium 浏览器滚动条操作
阅读量:6212 次
发布时间:2019-06-21

本文共 1594 字,大约阅读时间需要 5 分钟。

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

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

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

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

代码:

# coding = utf-8from selenium import webdriverfrom 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浏览器的插件: 

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

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

代码:

# coding = utf-8from selenium import webdriverfrom 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

你可能感兴趣的文章
方向搜索hdu 1180 诡异的楼梯 楼梯可以变方向的搜索题
查看>>
“快排”笔记
查看>>
vi-4
查看>>
PHP 如何读取一个1G的文件大小
查看>>
Wordpress 3.5.1的debug流水账
查看>>
C#开发一应用的总结
查看>>
setTimeout不断重复执行
查看>>
算法--样本方差、样本标准差、方差、标准方差与加权平均
查看>>
数学建模小练习(1):插值【转】
查看>>
Android开发方向
查看>>
【OpenMesh】使用网格的属性和特征
查看>>
Scrapy开发
查看>>
js获取url参数值
查看>>
cocos2d-x v3.0新特性及使用
查看>>
C#编程总结(二)多线程基础
查看>>
SharePoint Error occurred in deployment step 'Recycle IIS Application Pool': 0x80070005:拒绝访问...
查看>>
escape()、encodeURI()、encodeURIComponent()区别详解 (转)
查看>>
Python 反编译工具uncompyle2
查看>>
LINQ to SQL 建立实体类
查看>>
android存储阵列数据SharedPreferences
查看>>