1. 程式人生 > >26、Selenium + Python 實現 UI 自動化測試-呼叫 JavaScript 操作滾動條

26、Selenium + Python 實現 UI 自動化測試-呼叫 JavaScript 操作滾動條

前面我們學了 JavaScript 基礎、JS DOM等知識,也在Selenium中呼叫過一次 JavaScript 指令碼 實現滑動頁面滾動條。那在 Selenium 自動化的過程中,都有哪些呼叫 JS 的場景呢? 今天我們來總結一下:

1、使用 JS 滑動縱向滾動條

from selenium import webdriver
from time import sleep

# driver = webdriver.Chrome()
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id('kw'
).send_keys("storm") driver.find_element_by_id('su').click()#滑動滾動條到底部 js1 = "window.scrollTo(0, document.body.scrollHeight)"#滑動到頂部 js2 = "window.scrollTo(0,0)"#向下移動200畫素 js3 = "window.scrollTo(0,200)"#滑動滾動條到某個指定的元素 js4 = "arguments[0].scrollIntoView();"sleep(2) #等待頁面載入完,注意觀察滾動條目前處於最上方 driver.execute_script(js1) #執行js1,將滾動條滑到最下方
sleep(2) #加等待時間,看效果 driver.execute_script(js2) #執行js2,將滾動條滑到最上方 sleep(2) #加等待時間,看效果 driver.execute_script(js3) #執行js3,將滾動條向下滑到200畫素 sleep(2) #加等待時間,看效果 driver.execute_script(js2) #執行js2,將滾動條滑到最上方 sleep(2) ele = driver.find_element_by_id('con-ar') #定位一個元素 driver.execute_script(js4,ele) #滑動到上面定位的元素的地方
sleep(2) driver.quit()


以上語句Chrome 和 Firefox 瀏覽器測試都沒問題

2、使用 JS 滑動橫向滾動條

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id('kw').send_keys("storm")
driver.find_element_by_id('su').click()

driver.set_window_size(500,500) #縮小瀏覽器視窗,使之出現橫向滾動條
js5 = "window.scrollTo(document.body.scrollWidth,0)"
js6 = "window.scrollTo(0,0)"
js7 = "window.scrollTo(200,0)"
driver.execute_script(js5)  #移動到最右邊
sleep(2)
driver.execute_script(js6) #移動到最左邊
sleep(2)
driver.execute_script(js7) #向右移動200畫素
sleep(2)
driver.quit()

3、操作內嵌滾動條

內嵌滾動條,一般嵌在一個iframe 裡面,先切到要操作滾動條所在的iframe裡面即可

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.get("http://sahitest.com/demo/iframesTest.htm")
sleep(2)
driver.switch_to.frame(1)
js5 = "window.scrollTo(0,200)"
driver.execute_script(js5)  #向下移動200畫素
sleep(2)
driver.quit()

4、總結一下

1、使用window.scrollTo(x,y) 這一語句,可以實現所有的縱向或橫向滑動滾動條。其中x為橫座標,y為縱座標,想縱向滾動200畫素,就window.scrollTo(0,200)

2、 獲取當前視窗的高度和寬度

document.body.scrollWidth

document.body.scrollHeight

3、滑動到指定元素位置

arguments[0].scrollIntoView() ,arguments[0] 是指第一個傳參

5、拓展

實現滾動條滑動,還有其他js 寫法,還有人寫過 jQuery語句,本人並未研究透

例如:灰藍部落格介紹了多種方法,請根據實際情況參考:http://blog.csdn.net/huilan_same/article/details/52387102