在浏覽網頁時,通過鼠標滾動縱向滾動條,是常用的。在 Selenium 自動化測試框架裡,可以通過和 JS ( Java Script ), ActionChains 結合實現。下面將列舉4種的方法, 以新浪為例。
以下相關的方法測試視頻 請看 https://weibo.com/2203755810
1. JS的 scrollTo() 和 scrollBy() 方法
#1
直接移動到指定坐標的絕對位置。
#2
直接移動到相對指定的坐標位置,這個坐標是相對於(0,1000)這個絕對位置再向下移動300像素。
#3
再向下移動300像素,也就是相對於(0,1000)這個絕對坐標位置,移動600像素。
也通過 while 或者 for 循環去實現向下滾動的次數,可以減少重復代碼量。
注:視頻中以移動5次為例。
#4
滾動條拖動到最下方
#5
滾動條拖動到浏覽器的最上方
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get(‘http://www.sina.com.cn’)
browser.maximize_window()
time.sleep(3)
#1
js = ‘window.scrollTo(0,1000)’
browser.execute_script(js)
time.sleep(5)
#2
js = ‘window.scrollBy(0,300)’
browser.execute_script(js)
time.sleep(5)
#3
js = ‘window.scrollBy(0,300)’
browser.execute_script(js)
time.sleep(5)
#4
js = ‘window.scrollTo(0, document.body.scrollHeight)’
browser.execute_script(js)
time.sleep(5)
#5
js = ‘window.scrollTo(0,0)’
browser.execute_script(js)
2. scrollIntoView() 和 scrollIntoView(false) 方法
#1
定位 “游戲”,如下圖1
#2
用 scrollIntoView()方法,鼠標滾動動到"游戲" 頂端 與當前窗口的頂部對齊, 如下圖2
#3
用 scrollIntoView(false)方法鼠標滾動動到"游戲" 底端 與當前窗口的底部對齊 如下圖3
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()
browser.get(‘https://www.sina.com.cn’)
time.sleep(3)
#1
element = browser.find_element_by_xpath(’//*[@id=“SI_Order_L”]/div/div[1]/div/span[1]/a’)
#2
browser.execute_script(‘arguments[0].scrollIntoView()’, element)
time.sleep(3)
#3
browser.execute_script(‘arguments[0].scrollIntoView(false)’, element)
圖1
圖2
圖3
3. key_down() 和 key_up() 方法 結合循環方法
#1
按5次 Page_Down 鍵
#2
按5次 Page_Up 鍵
#3
按 End 鍵返回最底
#4
按 Home 鍵返回最頂
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Chrome()
browser.maximize_window()
browser.get(‘http://www.sina.com.cn’)
time.sleep(2)
#1
for i in range(5):
ActionChains(browser).key_down(Keys.PAGE_DOWN).key_up(Keys.PAGE_DOWN).perform()
time.sleep(2)
#2
for i in range(5):
ActionChains(browser).key_down(Keys.PAGE_UP).key_up(Keys.PAGE_UP).perform()
time.sleep(1)
#3
ActionChains(browser).key_down(Keys.END).key_up(Keys.END).perform()
time.sleep(2)
#4
ActionChains(browser).key_down(Keys.HOME).key_up(Keys.HOME).perform()
4. JS 的 scrollTop()方法
#1
變量值為1000,表示滾動到底部。
#2
變量值為0, 表示滾動到頂部
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.maximize_window()
browser.get(‘http://www.sina.com.cn’)
time.sleep(2)
#1
js=“var q=document.documentElement.scrollTop=10000”
browser.execute_script(js)
time.sleep(2)
#2
js=“var q=document.documentElement.scrollTop=0”
browser.execute_script(js)