Selenium2+Python2.0自动化测试【13】 操作滚动条

1.1       JS处理滚动条

        UI自动化中经常会遇到元素识别不到的问题,原因有很多,比如不在iframe里;有一种是在当前显示的页面元素不可见,需要进行拖动下拉条后才能通过selenium找到密码输入框的元素, selenium里面没有直接的方法去控制滚动条,selenium提供了一个操作js的方法:

execute_script(),可以直接执行js的脚本。

        对js不太熟悉的,可以到以下网站学习了解:

        http://www.runoob.com/js/js-tutorial.html

 

控制滚动条高度

滚动条回到顶部:

js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js) 
滚动条拉到底部

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

可以修改scrollTop 的值来定位右侧滚动条的位置,以像素为单位来定垂直滚动条位置,0是最上面,10000是最底部。

# coding=utf-8
# JS操作滚动条
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.maximize_window()
driver.get("http://cd.58.com/")
time.sleep(3)
# 将页面滚动条拖到底部
js = "var q = document.documentElement.scrollTop = 100000"
driver.execute_script(js)
time.sleep(3)
# 将滚动条移动到页面的顶部
js = "var q = document.documentElement.scrollTop = 0"
driver.execute_script(js)
time.sleep(3)
# 将页面滚动条移动到页面任意位置,改变等于号后的数值即可
js = "var q = document.documentElement.scrollTop = 150"
driver.execute_script(js)
time.sleep(3)
driver.quit()

PS:如果遇到内嵌滚动条还可以这样写:

js="var q=document.getElementById('id').scrollTop=0"
driver.execute_script(js) 

document.getElementById('id')里的id为滚动条的id

还有一种比较常用的写法,就是将滚动条拖到指定元素处:

# coding=utf-8
# JS操作滚动条
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.maximize_window()
driver.get("http://cd.58.com/")
time.sleep(3)
# 将页面滚动条拖到指定元素处
target = driver.find_element_by_link_text("举报平台")
driver.execute_script("arguments[0].scrollIntoView();", target)

除了上述方法,有时还可以曲线救国,使用键盘事件发送tap,down~~~~~~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值