Python selenium 滚动条

在我们使用Python + selenium 的时候,会遇到如下报错,原因是当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。selenium.common.exceptions.WebDriverException: Message: unknown error: Element , )

这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,

借助Js:   execute_script(),可以直接执行js的脚本。

一 、控制滚动条高度

#滚动条回到顶部:  

js="var q=document.getElementById(‘id‘).scrollTop=0"

driver.execute_script(js

 

#滚动条拉到底部

js="var q=document.documentElement.scrollTop=10000"

driver.execute_script(js)

 

#这里可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部。

js="var q=document.documentElement.scrollTop=5000"

driver.execute_script(js)

二、控制横向滚动

通过左边控制横向和纵向滚动条scrollTo(x, y

js = "window.scrollTo(100,400);"

driver.execute_script(js)

第一个参数x是横向距离,第二个参数y是纵向距离

 

附:

# 移动到元素element对象的“顶端”与当前窗口的“顶部”对齐

driver.execute_script("arguments[0].scrollIntoView();", element);

driver.execute_script("arguments[0].scrollIntoView(true);", element);

 

# 移动到元素element对象的“底端”与当前窗口的“底部”对齐

driver.execute_script("arguments[0].scrollIntoView(false);", element);

 

# 移动到页面最底部

driver.execute_script("window.scrollTo(0, document.body.scrollHeight)");

 

# 移动到指定的坐标(相对当前的坐标移动)

driver.execute_script("window.scrollBy(0, 700)");

# 结合上面的scrollBy语句,相当于移动到700+=1600像素位置

driver.execute_script("window.scrollBy(0, 800)");

 

# 移动到窗口绝对位置坐标,如下移动到纵坐标1600像素位置

driver.execute_script("window.scrollTo(0, 1600)");

# 结合上面的scrollTo语句,仍然移动到纵坐标1200像素位置

driver.execute_script("window.scrollTo(0, 1200)");

posted @ 2020-05-10 16:18  兵心  阅读(889)  评论(0编辑  收藏  举报