在浏览网页时,通过鼠标滚动纵向滚动条,是常用的。在 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)