Python+selenium 网页滚动条操作详解

selenium没有控制页面滚动的方法,这时候只能借助Js了,selenium提供了一个操作js的方法:

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

driver.execute_script('window.scrollTo(0,0)')

  

scrollTop是右侧高度滚动,Y轴滚动
1.滚动条回到顶部: 
 js="var q=document.getElementById(‘id‘).scrollTop=0"
  driver.execute_script(js) 
2.滚动条拉到底部

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

3.这里可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部。
  js="var q=document.documentElement.scrollTop=5000"
  driver.execute_script(js)

  X轴滚动

  1.有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)。
  2.通过左边控制横向和纵向滚动条scrollTo(x, y)

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

  3.第一个参数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+800=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)");

 

滚动至指定元素高度

balan_title_loc = '//span[@class="header-period"]'
                    target = self.driver.find_element_by_xpath(balan_title_loc)
                    self.driver.execute_script("arguments[0].scrollIntoView();", target)

 

在内嵌div内滚动

div内的ID定位及滚动

js = 'document.getElementById("zhizi_mask").scrollTop=10000'
driver.execute_script(js)

  

div内的classname定位及滚动,注意getElements返回的是个列表所以[0]

js = 'document.getElementsByClassName("scroll")[0].scrollTop=10000'
driver.execute_script(js)

  

获取滚动条当前高度

return document.getElementsByClassName("a-l-page-container")[0].scrollTop

get_scroll_height_js = "return document.documentElement.scrollTop"

  

获取当前滚动条全部高度

more_h = 'var q=document.body.offsetHeight;return(q)'

  

width = self.driver.execute_script("return document.documentElement.scrollWidth")
height = self.driver.execute_script("return document.documentElement.scrollHeight")

  

posted @ 2022-02-18 17:21  究极不吃香菜  阅读(2466)  评论(0编辑  收藏  举报