[Python爬⾍]之五:Selenium处理滚动条
js控制滚动条
  selenium并不是万能的,有时候页⾯上操作⽆法实现的,这时候就需要借助JS来完成了。
  当页⾯上的元素超过⼀屏后,想操作屏幕下⽅的元素,是不能直接定位到,会报元素不可见的。这时候需要借助滚动条来拖动屏幕,使被操作的元素显⽰在当前的屏幕上。滚动条是⽆法直接⽤定位⼯具来定位的。selenium⾥⾯也没有直接的⽅法去控制滚动条,这时候只能借助J了,还好selenium提供了⼀个操作js的⽅法:execute_script(),可以直接执⾏js的脚本。
  ⼀、控制滚动条⾼度
  1.滚动条回到顶部:
    js="var ElementById('id').scrollTop=0"
    ute_script(js)
  2.滚动条拉到底部
    js="var q=document.documentElement.scrollTop=10000"
    ute_script(js)
    可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上⾯,10000是最底部。
    以上⽅法在Firefox和IE浏览器上上是可以的,但是⽤Chrome浏览器,发现不管⽤。Chrome浏览器解决办法:
    js = "var q=document.body.scrollTop=0"
    ute_script(js)
  ⼆、横向滚动条
    1.有时候浏览器页⾯需要左右滚动(⼀般屏幕最⼤化后,左右滚动的情况已经很少见了)。
    2.通过左边控制横向和纵向滚动条scrollTo(x, y)js = "window.scrollTo(100,400);"
    ute_script(js)
  三、元素聚焦
    虽然⽤上⾯的⽅法可以解决拖动滚动条的位置问题,但是有时候⽆法确定我需要操作的元素在什么位置,有可能每次打开的页⾯不⼀样,元素所在的位置也不⼀样,怎么办呢?这个时候我们可以先让页⾯直接跳到元素出现的位置,然后就可以操作了。
    同样需要借助JS去实现。具体如下:
    target = driver.find_element_by_xxxx()
    ute_script("arguments[0].scrollIntoView();", target)
  四、参考代码
  例如定位id =J_ItemList的元素