[Python爬虫] 之五:Selenium 处理滚动条

   selenium并非万能的,有时候页面上操做没法实现的,这时候就须要借助JS来完成了。浏览器

  当页面上的元素超过一屏后,想操做屏幕下方的元素,是不能直接定位到,会报元素不可见的。这时候须要借助滚动条来拖动屏幕,使被操做的元素显示在当前的屏幕上。滚动条是没法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,这时候只能借助J了,还好selenium提供了一个操做js的方法:execute_script(),能够直接执行js的脚本。工具

  1、控制滚动条高度blog

  1.滚动条回到顶部:ip

    js="var q=document.getElementById('id').scrollTop=0"
    driver.execute_script(js) 
  2.滚动条拉到底部element

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

    能够修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部。selenium

    以上方法在Firefox和IE浏览器上上是能够的,可是用Chrome浏览器,发现无论用。Chrome浏览器解决办法:List

    js = "var q=document.body.scrollTop=0"
    driver.execute_script(js)scroll

 

  2、横向滚动条
    1.有时候浏览器页面须要左右滚动(通常屏幕最大化后,左右滚动的状况已经不多见了)。
    2.经过左边控制横向和纵向滚动条scrollTo(x, y)js = "window.scrollTo(100,400);"方法

    driver.execute_script(js)

  3、元素聚焦

    虽然用上面的方法能够解决拖动滚动条的位置问题,可是有时候没法肯定我须要操做的元素在什么位置,有可能每次打开的页面不同,元素所在的位置也不同,怎么办呢?这个时候咱们能够先让页面直接跳到元素出现的位置,而后就能够操做了。

    一样须要借助JS去实现。 具体以下:

    target = driver.find_element_by_xxxx()
    driver.execute_script("arguments[0].scrollIntoView();", target)

  4、参考代码

  

  例如定位id =J_ItemList的元素

  

相关文章
相关标签/搜索