12、js处理web页面滚动条

应用场景:当页面上的元素超过一屏后,待操作的元素在页面可视区域外时,是不能直接定位到,会报元素不可见错误:is not clickable at point!!

解决办法:要将待操作的元素滚动到可视区域当中,这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。

滚动条是无法直接用定位工具来定位的,selenium 里面也没有直接的方法去控制滚动条,但 selenium 提供了一个操作 js 的方法:execute_script(),可以直接执行 js 的脚本

 

1.先找要将要操作的元素
element = driver.find_element_by_xxxx("XXXX")

2.再将元素滑动到可视区域:通过执行javaScript语句实现
driver.execute_script("arguments[0].scrollIntoView();",element)

3.再操作元素
element.XXX()

 

以下是移动的四种方式

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

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

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

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

3.移动到页面底部

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

4.移动到页面顶部

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

针对Chrome浏览器用下面

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

 

 

 

 

 

 

 

 




 

 

 

 

 

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver=webdriver.Chrome()

driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
time.sleep(5)
#第一步:先定位到元素:如果有时候找不到元素有时候能找到,说明是有时候元素没有加载出来,在上一步操作之后加一个时间等待页面加载完成
ele =driver.find_element_by_xpath('//a[@class="n"]') #定位页面底部的“下一页”
ele1=driver.find_element_by_link_text("资讯")          #定位页面顶部的“资讯”
# #第二步:将元素移动到可视区域
driver.execute_script("arguments[0].scrollIntoView();",ele)
time.sleep(3)
driver.execute_script("arguments[0].scrollIntoView(false);",ele1)  #
# 第三步,操作元素
ele1.click()
time.sleep(3)
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") #移动到页面底部
time.sleep(3)
driver.execute_script("window.scrollTo(0,document.body.scrollTop,0)") #移动到页面顶部

 

posted @ 2019-04-26 16:50  YLG001  阅读(2486)  评论(0编辑  收藏  举报