1. 程式人生 > >Selenium 瀏覽器滾動條操作

Selenium 瀏覽器滾動條操作

.com bst wait 圖片 AS alt 右上角 odi src

在用selenium做WEB自動化時,經常會碰到要定位的元素不在當前屏,需要拖動瀏覽器的滾動條才能顯示出來。如果直接去定位的話,一定會報元素不存在的錯誤。那麽怎麽對瀏覽器的滾動條進行操作呢?

webdriver不能定位到瀏覽器的滾動條,只有通過execute_script()來執行js腳本,達到操作滾動條的目的。

一、通過元素所在位置來拖動滾動條

這個方法是最常用的,它就好像我們人一樣拖動滾動條用眼睛在頁面上尋找需要的元素,一旦找到那個元素了,我就停止拖動。

代碼:

# coding = utf-8
from selenium import webdriver
from time import
sleep # 驅動文件路徑 driverfile_path = rD:\coship\Test_Framework\drivers\chromedriver.exe # 啟動瀏覽器 driver = webdriver.Chrome(executable_path=driverfile_path) driver.get(rhttps://www.autoitscript.com/site/autoit/downloads/) driver.maximize_window() driver.implicitly_wait(20) # 描述元素的屬性 target = driver.find_element_by_css_selector("
img[title=‘Download AutoIt‘]") # 執行js腳本,拖動瀏覽器滾動條到元素的位置 driver.execute_script("arguments[0].scrollIntoView();", target) # 退出 sleep(5) driver.quit()

二、Window.scrollTo()方法

scrollTo(xpos,ypos)

此方法可以把滾動條拖動到指定的坐標,其中xpos是橫坐標,也就是對橫滾動條進行操作;ypos是縱坐標,也就是對豎進度條進行操作

那麽我們怎麽能知道元素所在位置的坐標呢?先來介紹一個Chrome瀏覽器的插件: page ruler

安裝插件後,打開谷歌瀏覽器,可以再右上角看到一把尺子的圖標,點擊尺子的圖標,移動到元素的位置,就可以顯示這個元素的坐標了,如圖:

技術分享圖片

知道元素的坐標後,我們就可以拖動滾動條了。

代碼:

# coding = utf-8
from selenium import webdriver
from time import sleep
# 驅動文件路徑
driverfile_path = rD:\coship\Test_Framework\drivers\chromedriver.exe
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
driver.get(rhttps://www.autoitscript.com/site/autoit/downloads/)
driver.maximize_window()
driver.implicitly_wait(20)
# 調用JS代碼拖動滾動條
driver.execute_script("window.scrollTo(0,1680)")
# 直接拖動到底部
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
# 拖動到頂部
driver.execute_script("window.scrollTo(0,0)")
# 退出
sleep(5)
driver.quit()

Selenium 瀏覽器滾動條操作