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)") #移動到頁面頂部

 


免責聲明!

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



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