"""
大多數網頁,頁面內容超多自動出現了滾動條,通過代碼找到元素后即可操作 因為它會自動滾動到元素可見位置。
有些不會自動滾動的頁面 就需要用代碼操作滾動條
滾動的目的:將你要操作的元素,滾動到可視區域后,再操作。
滾動不是滾動的右側滾動條,而是把元素滾動到可視區域 滾的是元素。
前端開發中 動態效果是由js實現的,所以這個滾動的動作也是js實現的
python中執行js語句用函數execute_script()
很多的網頁,是會自己滾的。如何檢測:直接不滾動去操作滾動條最下方數據 看能否操作 能就是自動滾的 試下淘寶 京東
"""
#示例百度首頁搜索“檸檬班”,搜索結果中點擊一個頁面要翻頁才能看到的鏈接元素
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
# driver.maximize_window()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("檸檬班",Keys.ENTER)
# 等待搜索結果出現
loc = (By.XPATH,'//a[contains(text(), "知乎")]')
WebDriverWait(driver,10).until(EC.visibility_of_element_located(loc))
# 找到要滾動的元素
ele = driver.find_element(*loc)
# 先滾動到可視區域后,
#操作滾動條要用java script(js)語句,python中執行js的函數為execute_script()
# def execute_script(self, script, *args): 參數1:javascript腳本 參數2-n:傳給js腳本的參數
#element.scrollIntoView(); #js中用來將某元素滾動到可見區域的語句,注意要引號 分號
# js腳本當中,用什么來接收外部的參數?arguments 是個列表。
# js腳本當中,什么函數來滾動頁面呢?scrollIntoView()
# scrollIntoView() 元素與頁面頂部對齊 如果頂部有個遮罩層 就可能看不到。scrollIntoView(false) 與頁面底部對齊
driver.execute_script("arguments[0].scrollIntoView(false);", ele)#滾動到元素出現在頁面底部 常用固定用法 記!
# driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
time.sleep(2)
# 再去點擊
ele.click()
"""
直接滾動到頁面底部 (常用於要用翻頁控件):
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
直接滾動到頁面頂部:
driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")
"""