Selenium及python实现滚动操作多种⽅法
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 ute_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 ute_script(js)
js控制滚动条
或者:
js="var ElementById('***').scrollTop=10000"
这⾥的id为滚动条的id,但js中没有xpath的⽅法,所以滚动条没有id的⽹页此⽅法不适⽤
上⾯展⽰的是上下⽅向的滚动条,接下来介绍左右⽅向的滚动条的操作⽅法
#左右⽅向的滚动条可以使⽤window.scrollTo(左边距,上边距)⽅法
#example
js="window.scrollTo(200,1000)"
⽅法⼆:使⽤ js 脚本拖动到指定位置
target = driver.find_element_by_id("***")
该⽅法可以将滚动条拖动到需要显⽰的元素位置,此⽅法⽤途⽐较⼴
⽅法三:根据页⾯显⽰进⾏变通,发送tab键
⽐如,密码是输⼊框,正常⼿⼯操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显⽰
from selenium.webdrivermon.keys import Keys
driver.find_element_by_id("****").send_keys(Keys.TAB)
⽅法四:
scrollTo函数
--scrollHeight 获取对象的滚动⾼度。
--scrollLeft 设置或获取位于对象左边界和窗⼝中⽬前可见内容的最左端之间的距离。
--scrollTop 设置或获取位于对象最顶端和窗⼝中可见内容的最顶端之间的距离。
--scrollWidth 获取对象的滚动宽度
#滚动到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
#滚动到顶部
js = "window.scrollTo(0,0)"
其他:
robotframe work框架中,selenium2library⾥⾯有⼀个⾮常好⽤的功能Focus,会⾃动定位到元素。代码块
driver.find_element_by_xpath("//div[@id='search']/div/span/input").click()
target = driver.find_element_by_id("_easyui_tree_17")
driver.find_element_by_xpath("//span[@class='tree-title'][text()='专业测试.修改后/123456']").click()
此⽅法与我们在python⾃⼰写的⽅法⼆)⼀致,⼯具给我们做了封装。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。