在用selenium做web自動化時,經常會碰到要定位的元素不在當前屏,需要拖動瀏覽器的滾動條才能顯示出來。如果直接去定位的話,一定會報元素不存在的錯誤。那麼怎麼對瀏覽器的滾動條進行操作呢?
webdriver不能定位到瀏覽器的滾動條,只有通過execute_script()來執行js指令碼,達到操作滾動條的目的。
這個方法是最常用的,它就好像我們人一樣拖動滾動條用眼睛在頁面上尋找需要的元素,一旦找到那個元素了,我就停止拖動。
**:
#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
'')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()
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
'')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()
瀏覽器滾動條
做 時發現登入成功後瀏覽器滾動條消失無法滾動頁面 通過觀察和除錯,發現是強制隱藏了bootstrap的模態框後,body的overflow變為了hidden,同時也多了乙個17px的右內邊距,無法呼叫出垂直滾動條,解決方案 隱藏模態框的同時設定body的overflow為scroll,同時取消右內邊...
Selenium成長之路 22瀏覽器滾動條處理
在實際專案中,會經常出現元素不在當前螢幕,需要滑動滾動條,才能顯示想要的元素。這樣,如何通過定位滾動條,來定位到想要的元素呢,webdriver不能直接定位到瀏覽器滾動條,只能通過execute script 來執行js指令碼,達到滾動條的目的 我們今天運用window.scrollto 的方法來定...
selenium針對瀏覽器滾動條的操作
我們在實際自動化測試過程中,肯定會遇到當前頁面顯示不到我們定位的元素。這就需要下拉滾動條才能顯示出我們的元素 而滾動條的按鈕又是我們定位不到的,所以需要使用js指令碼來完成 1.先來說我們的下拉滾動條的操作 通過js指令碼進行設計 通過座標點進行絕對移動 座標原點 0,0 get driver.ma...