python selenium 滾動條處理、頁面拖動


  selenium中沒有直接控制滾動條的方法,可以使用方法:execute_script(),可以直接執行js的腳本。

  一、豎向滾動條控制,三種方法總有一款適合你。

    1.滾動條拉到最底:

      js="var q=document.documentElement.scrollTop=10000"

      driver.execute_script(js)

    2.滾動條拉到最底:    

      js="var q=document.getElementById('id').scrollTop=10000"

      driver.execute_script(js)

      這里的id為滾動條的id,滾動條沒有id的網頁此方法不適用。

    3.滾動條拉到最底:

      js = "var q=document.body.scrollTop=10000"

      driver.execute_script(js)

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

            在百度中搜索selenium,拖動滾動條至最底端:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
# 搜索 selenium
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
# 等待元素可見
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="5"]/h3/a')))
# 將滾動條下拉至最低
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

   二、橫向滾動條控制

    1.通過坐標控制橫向和縱向滾動條 scrollTo(x, y)

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

    driver.execute_script(js)

 

  三、將目標元素拖動到頁面可見區域

    1.可見元素與頁面“底端”對齊,scrollIntoView(false)

    2.可見元素與頁面“頂端”對齊,scrollIntoView()

  在百度中搜索selenium,拖動元素至頁面底端,便於點擊操作(因為在百度中將元素拖動至頁面頂端時,會被百度網頁自帶的表頭遮擋住,點擊時會報錯)

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
# 搜索 selenium
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
# 等待元素可見
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="5"]/h3/a')))
# 1.先找到元素
element = driver.find_element_by_xpath('//*[@id="5"]/h3/a')

# 2.利用js將元素拖動到可見區域
driver.execute_script("arguments[0].scrollIntoView(false);",element)  #可見元素與頁面“底端”對齊

 執行結果如下:

 

  三、滾動頁面到最底部

      方法:window.scrollTo

      driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.implicitly_wait(20)
driver.maximize_window()
# 搜索 selenium
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
# 等待元素可見
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="5"]/h3/a')))
# 1.操作元素
driver.find_element_by_xpath('//*[@id="5"]/h3/a').click()

# 2.等待新窗口打開
WebDriverWait(driver,10).until(EC.new_window_is_opened(windows))

# 獲取當前所有窗口句柄
windows = driver.window_handles

# 3.切換到最后一個窗口
driver.switch_to.window(windows[-1])

# 滾動頁面到最底部
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
sleep(5)
driver.quit()

 

 

 

==================================================================================

尊重原創,若需轉載請注明出處:https://www.cnblogs.com/lizhe860/

================================================================================== 


免責聲明!

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



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