使用示例
js = "window.scrollto(x,y)
"x為水平拖動距離,y為垂直拖動舉例
driver.execute_script(js)
js= "
var q=document.documentelement.scrolltop=n
"n為從頂部往下移動滾動舉例
driver.execute_script(js)
豎向滾動
from selenium importwebdriver
driver =webdriver.chrome()
driver.get(
'***')
js = '
var action=document.documentelement.scrolltop=10000'#
設定滾動條距離頂部的位置,設定為 10000, 超過10000就是最底部
driver.execute_script(js) #
執行指令碼
js = '
var action=document.documentelement.scrolltop=0'#
回到頂部
driver.execute_script(js)
driver.quit()
from selenium importwebdriver
import
unittest, time
class
testdemo(unittest.testcase):
defsetup(self):
self.driver =webdriver.chrome()
deftest_scroll(self):
url = '
'try
: self.driver.get(url)
#使用js的scrollto函式和document.body.scrollheight引數
#將頁面的滾動條滑動到頁面的最下方
self.driver.execute_script('
window.scrollto(1000,document.body.scrollheight);')
#使用js的scrollintoview函式將遮擋的元素滾動到可見螢幕上
#scrollintoview(true)表示將元素滾動到螢幕中間
#scrollintoview(false)表示將元素滾動到螢幕底部
self.driver.execute_script("
document.getelementbyid('choice').scrollintoview(true);")
self.driver.execute_script(
"document.getelementbyid('choice').scrollintoview(false);")
time.sleep(3)
#使用js的scrollby方法,使用0和400橫縱座標引數,
#將螢幕向下滾動400畫素
self.driver.execute_script('
window.scrrollby(0,400);')
time.sleep(3)
except
exception as e:
(e)
defteardown(self):
self.driver.quit()
if__name__ == '
__main__':
unittest.main()
在本例中的頁面中,密碼是輸入框,正常手工操作時,可以通過tab鍵會切換到密碼框中,所以根據此思路,在python中也可以傳送tab鍵來切換,使元素顯示
from selenium.webdriver.common.keys import keys
driver.find_element_by_id("id_login_method_0").send_keys(keys.tab)
在web自動化中,不只只有縱向滾動條,可能還有橫線滾動條
js ="window.scrollto(100,400);"
driver.execute_script(js) # 第乙個引數 x 是橫向距離,第二個引數 y 是縱向距離
以上方法在 firefox 上是可以的,但是用 chrome 瀏覽器,發現不管用。谷歌瀏覽器就是這麼任性,不聽話,於是用以下方法解決谷歌瀏覽器滾動條的問題。
js = "var q=document.body.scrolltop=0"
driver.execute_script(js)
雖然用上面的方法可以解決拖動滾動條的位置問題,但是有時候無法確定我需要操作的元素,這個時候我們可以先讓頁面直接跳到元素出現的位置,然後就可以操作了。同樣需要借助 js 去實現
target = driver.find_element_by_***x()
driver.execute_script("arguments[0].scrollintoview();", target)
瀏覽器滾動條
做 時發現登入成功後瀏覽器滾動條消失無法滾動頁面 通過觀察和除錯,發現是強制隱藏了bootstrap的模態框後,body的overflow變為了hidden,同時也多了乙個17px的右內邊距,無法呼叫出垂直滾動條,解決方案 隱藏模態框的同時設定body的overflow為scroll,同時取消右內邊...
Selenium 瀏覽器滾動條操作
在用selenium做web自動化時,經常會碰到要定位的元素不在當前屏,需要拖動瀏覽器的滾動條才能顯示出來。如果直接去定位的話,一定會報元素不存在的錯誤。那麼怎麼對瀏覽器的滾動條進行操作呢?webdriver不能定位到瀏覽器的滾動條,只有通過execute script 來執行js指令碼,達到操作滾...
iframe滾動條充當瀏覽器滾動條
在做部落格專案的時候,使用了iframe,方便根據選擇的文章類別切換顯示的內容,但是文章一般都有很多,通過bootstrap的 列表的方式顯示的話,iframe是一定會出現滾動條的,特別是我新增了乙個 滾動條觸底之後動態載入更多的文章 的功能。這樣頁面上就會有兩個滾動條,特別奇怪。在網上學習了一些之...