看到書上有一個控制chrome的頁面滾動條的方法,試着運行了一下,總是報錯。在網上也找到過這個方法,但說的都比較簡單,就是運行不了。可能是我對它理解的不夠。
幸好,又找到了另外一個方法,解決了這個問題,能成功的操作頁面的滾動條。
貼代碼:
#coding=utf-8
import time
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.maximize_window()
driver.implicitly_wait(20)
driver.find_element_by_id('kw').send_keys('hello!')
driver.find_element_by_id('su').click()
a=driver.current_window_handle
driver.switch_to_window(a)
time.sleep(3)
# js01 = "window.scrollBy(0,1000)" #滾動頁面,控制頁面的滾動條
# driver.execute_script(js01)
targetElem = driver.find_element_by_xpath('//*[@id="6"]/h3/a')
driver.execute_script("arguments[0].focus();",targetElem) #滾動到頁面的指定元素
參考文章內容:——跟我遇到的問題非常類似。
目的:通過selenium控制瀏覽器滾動條
原理:通過 driver.execute_script()執行js代碼,達到目的
driver.execute_script(
"window.scrollBy(0,1000)"
)
語法:scrollBy(x,y)
參數 描述
x 必需。向右滾動的像素值。
y 必需。向下滾動的像素值。
或者用
driver.execute_script(
"window.scrollTo(0,1000)"
)
語法:scrollBy(x,y)
參數 描述
x 必需。必需。要在窗口文檔顯示區左上角顯示的文檔的 x 坐標。
y 必需。必需。要在窗口文檔顯示區左上角顯示的文檔的 y 坐標。
配合chrome插件能快速找到位置:page ruler
問題總結:
為了達到目的我想到了
2
種方法:
1.
網上大多是拿到瀏覽器滾動條的js代碼,然后執行,不知道為什么我這親測沒有成功;
js
=
"var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
2.
通過模擬鍵盤的形式去滾動屏幕,也沒成功,也許是我對這個用法還不熟練
driver.find_element_by_css_selector(
'.fadeInUp.animated'
).send_keys(Keys.DOWN)