selenium滚动条

运行python时出现报错

Element is not clickable at point (x, x). Other element would receive the click

报错原因:要点击的元素已经加载,但是界面没有显示出来,需要拉滚动条才能显示出来

程序如下:

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
#拖动到滚动条底部---向下
js = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
sleep(3)
#滚动左右滚动条---向右
js2 = "var q=document.documentElement.scrollLeft=10000"
driver.execute_script(js2)
sleep(3)
#滚动左右滚动条---向左
js3 = "var q=document.documentElement.scrollLeft=0"
driver.execute_script(js3)

# #控制滚动条逐步滚动
# for y in range(15):
#     js = "window.scrollBy(0,100)"
#     driver.execute_script(js)
#     sleep(1)

 以上的这个方法有的时候无效,我觉得可能是因为界面滚动元素太多了

换一种方式

我们可以先让页面直接跳到元素出现的位置,然后就可以操作了。同样需要借助JS去实现。 
元素聚焦:

target = driver.find_element_by_xxxx()  #界面上想要看到的元素
driver.execute_script("arguments[0].scrollIntoView();", target)

 

scrollIntoView是一个与页面(容器)滚动相关的API

element.scrollIntoView() 参数默认为true

参数为true:调用该函数,页面发送滚动,使element的顶部与视图(容器)顶部对齐

参数为false:使element的底部与视图(容器)底部对齐

posted @ 2020-03-05 10:09  mghhz816  阅读(194)  评论(0编辑  收藏  举报