在平時的測試中,有可能需要定位的元素,不在當前的畫面內,就會對滾動條產生一定的操作。對滾動條的操作,實際上也是selenuim對JS的一種操作,正因為selenuim可以對js進行操作,也就有了極大的操作空間
本文主要介紹兩個方法:
scrollTo(x,y)
x表示橫向距離,y表示縱向距離
其中 x,y的距離,都是以(0,0)為起點的
對比scrollBy() 則是相對當前位置滾動的
scrollIntoView()
函數將被遮擋的元素滾動到可見的屏幕上
scrollIntoView(true)將元素滾動到屏幕中間
scrollIntoView(false)將元素滾動到屏幕底部
實驗例子:打開百度,搜索selenuim,並拉動頁面的滾動條。
from selenium import webdriver import time if __name__ == '__main__': driver = webdriver.Chrome() driver.get("https://www.baidu.com/") driver.maximize_window() driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").click() time.sleep(3) ''' scrollTo(x,y) x表示橫向距離,y表示縱向距離 其中 x,y的距離,都是以(0,0)為起點的 對比scrollBy() 則是相對當前位置滾動的 ''' # 將頁面拉到最下方,添加等待時間方便在窗口看結果 print("將頁面拉到最下方") time.sleep(5) driver.execute_script("window.scrollTo(0,document.body.scrollHeight);") # 將頁面拉到最上方 print("將頁面拉到最上方") time.sleep(5) driver.execute_script("window.scrollTo(0,0);") time.sleep(5)
# 將頁面向下拉取400像素 print("將頁面向下拉取400像素") time.sleep(5) driver.execute_script("window.scrollTo(0,400);") ''' scrollIntoView函數將被遮擋的元素滾動到可見的屏幕上 scrollIntoView(true)將元素滾動到屏幕中間 scrollIntoView(false)將元素滾動到屏幕底部 ''' # 將搜索selenium的結果頁面的底部page滾動到屏幕中間 print("將搜索selenium的結果頁面的底部page滾動到屏幕中間") time.sleep(5) driver.execute_script("document.getElementById('page').scrollIntoView(true)")
總結:拉動滾動條,其實也是一個操作js的過程,如果有其他的js語句需要執行,也可以采用 driver.execute_script(“js語句”)的方式