Selenium 瀏覽器滾動條操作
阿新 • • 發佈:2018-06-04
.com bst wait 圖片 AS alt 右上角 odi src
在用selenium做WEB自動化時,經常會碰到要定位的元素不在當前屏,需要拖動瀏覽器的滾動條才能顯示出來。如果直接去定位的話,一定會報元素不存在的錯誤。那麽怎麽對瀏覽器的滾動條進行操作呢?
webdriver不能定位到瀏覽器的滾動條,只有通過execute_script()來執行js腳本,達到操作滾動條的目的。
一、通過元素所在位置來拖動滾動條
這個方法是最常用的,它就好像我們人一樣拖動滾動條用眼睛在頁面上尋找需要的元素,一旦找到那個元素了,我就停止拖動。
代碼:
# coding = utf-8 from selenium import webdriver from time importsleep # 驅動文件路徑 driverfile_path = r‘D:\coship\Test_Framework\drivers\chromedriver.exe‘ # 啟動瀏覽器 driver = webdriver.Chrome(executable_path=driverfile_path) driver.get(r‘https://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 = r‘D:\coship\Test_Framework\drivers\chromedriver.exe‘ # 啟動瀏覽器 driver = webdriver.Chrome(executable_path=driverfile_path) driver.get(r‘https://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 瀏覽器滾動條操作