python自动化之JS处理滚动条

滚动条操作
浏览器滚动条并没有提供相应的操作方法。在这种情况下,就可以借助JavaScript也就是JS来控制浏览器的滚动条。
WebDriver提供了execute_script()方法来执行JavaScript代码。
js="window.scrollTo(100,450);"
driver.execute_script(js)
当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。
这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。
滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,这时候只能借助JS了,还好selenium提供了一个操作js的方法:
execute_script(),可以直接执行js的脚本。
--scrollHeight 获取对象的滚动高度。
--scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。
--scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。
--scrollWidth 获取对象的滚动宽度。

代码参考:
 

# coding:utf-8
from time import sleep
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
print(driver.name)

# 滚动到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)

# ## 回到顶部
# def scroll_top():
#     if driver.name == "chrome":
#        js = "var q=document.body.scrollTop=0" # Chrome浏览器不管用的话,可以这样试试
#     else:
#         js = "var q=document.documentElement.scrollTop=0"
#     return driver.execute_script(js)

# 滚动到顶部
js = "window.scrollTo(0,0)"
driver.execute_script(js)
sleep(5)

# 滚动到底部
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
sleep(5)

# 聚焦元素
target = driver.find_element_by_link_text("hao123")
driver.execute_script("arguments[0].scrollIntoView();", target)
sleep(3)
driver.quit()

关注公众号:Python爬虫数据分析挖掘,免费获取更多开源项目源码

posted @ 2020-09-03 22:57  Python研究者  阅读(98)  评论(0编辑  收藏  举报