[Python爬蟲] 之五:Selenium 處理滾動條


   selenium並不是萬能的,有時候頁面上操作無法實現的,這時候就需要借助JS來完成了。

  當頁面上的元素超過一屏后,想操作屏幕下方的元素,是不能直接定位到,會報元素不可見的。這時候需要借助滾動條來拖動屏幕,使被操作的元素顯示在當前的屏幕上。滾動條是無法直接用定位工具來定位的。selenium里面也沒有直接的方法去控制滾動條,這時候只能借助J了,還好selenium提供了一個操作js的方法:execute_script(),可以直接執行js的腳本。

  一、控制滾動條高度

  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)

    可以修改scrollTop 的值,來定位右側滾動條的位置,0是最上面,10000是最底部。

    以上方法在Firefox和IE瀏覽器上上是可以的,但是用Chrome瀏覽器,發現不管用。Chrome瀏覽器解決辦法:

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

 

  二、橫向滾動條
    1.有時候瀏覽器頁面需要左右滾動(一般屏幕最大化后,左右滾動的情況已經很少見了)。
    2.通過左邊控制橫向和縱向滾動條scrollTo(x, y)js = "window.scrollTo(100,400);"

    driver.execute_script(js)

  三、元素聚焦

    雖然用上面的方法可以解決拖動滾動條的位置問題,但是有時候無法確定我需要操作的元素在什么位置,有可能每次打開的頁面不一樣,元素所在的位置也不一樣,怎么辦呢?這個時候我們可以先讓頁面直接跳到元素出現的位置,然后就可以操作了。

    同樣需要借助JS去實現。 具體如下:

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

  四、參考代碼

  

  例如定位id =J_ItemList的元素

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM