一 滾動的目標
為了讓自己要操作的元素,滾動到可視區域當中目前,很多網頁是可以自己滾動到可視區域的。當網頁無法滾動到可視區域或界面中存在小的滾動條,需要借助js語句進行滾動操作。
二 自動化中如何操作滾動條
1.在selenium中提供了execute_script()方法去執行js語句來實現滾動操作
2.滾動的步驟是:
(1)通過selenium找到我們需要的元素element
(2)通過執行js語句,將元素滾動到可見區域
3.基本語法:driver.execute_script("arguments[0].scrollIntoView();",element)
4.語法參數說明:
(1)element是通過selenium定位到元素
(2)在js語句中不能直接接收外部傳來的參數,需要通過arguments進行接收在傳遞,argements是一個列表,可以接收多個外部參數,使用時通過下標取值進行傳遞,例如0代表第一個參數
三 滾動到可視區域的語法
基本語法:element.scrollIntoView();
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(document.body.scrollHeight,
0)")
四 舉個栗子
在百度中搜索張韶涵微博
操作代碼如下:
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver =webdriver.Chrome()
driver.get("http://www.baidu.com")
# 在百度的輸入框中搜索張韶涵,使用鍵盤中的enter按鈕
driver.find_element_by_id('kw').send_keys("張韶涵",Keys.ENTER)
# 通過XPATH定位方法,定位到張韶涵的微博元素
loc =(By.XPATH,'//a[text()="的微博_微博"]')
# 等待元素,直到元素可見
WebDriverWait(driver,20).until(EC.visibility_of_element_located(loc))
ele =driver.find_element(*loc)
# 通過js語句來操作滾動,false滾動到底部位置
driver.execute_script("arguments[0].scrollIntoView(false);",ele)
time.sleep(2)
ele.click()
driver.quit()