總結 JS在Selenium中的使用

2022-08-23 07:42:11 字數 1678 閱讀 5642

前言:做web自動化時,一般可利用selenium定位頁面元素進行如click,sendkeys類的操作。但也常遇到api沒有呼叫錯,卻無法定位到元素,或者,無法進行操作。fortunately,selenium提供了操作js的方法:execute_script(),可以直接執行js的指令碼。常用的js彙總如下:

一.控制滾動條高度

問題:需要定位的元素沒有在當前頁面顯示,無法定位,需要上下滑動滾動條才可以看到

--scrollheight 獲取物件的滾動高度。 

--scrollleft 設定或獲取位於物件左邊界和視窗中目前可見內容的最左端之間的距離。 

--scrolltop 設定或獲取位於物件最頂端和視窗中可見內容的最頂端之間的距離。 

--scrollwidth 獲取物件的滾動寬度。

#滾動到底部

js = "window.scrollto(0,document.body.scrollheight)" 

#滾動到頂部

js = "window.scrollto(0,0)" 

#橫向滾動

1.滾動條左右滾動(一般螢幕最大化後,很少出現此種情況)

2.通過座標控制橫向和縱向滾動條scrollto(x, y)

js =

"window.scrollto(100,200);"

備註:scrollto方法無瀏覽器相容問題,可以通用,但其他的方法有相容性區別,如:

1.針對chrome, js = "var

q=document.body.scrolltop=0"

2.除chrome其他瀏覽器,js = "var

q=document.documentelement.scrolltop=0"

二.控制內嵌滾動條高度

問題:在內嵌網頁或文字中有滾動條

上下左右滾動

js='document.getelementbyid("div_id").scrolltop=0』

js='document.getelementbyid("div_id").scrolltop=10000』

js='document.getelementbyid("div_id").scrollleft=0

js='document.getelementbyid("div_id").scrollleft=10000』

.日曆控制項readonly屬性

問題:日曆控制項存在readonly="readonly"時,無法用sendkeys輸入日期

1.方法:先刪除readonly屬性,再clear,然後輸入

js = 'document.getelementbyid("date").removeattribute("readonly");'

2.方法:用js方法輸入日期

js2 = 'document.getelementbyid("date").value="2018-07-20"'

driver.execute_script(js2)

----如果js還是無法滑動滾動條的話,考慮用滑鼠操作,actionchains模擬滑鼠的行為

JS在Selenium中的使用

前言 做web自動化時,一般可利用selenium定位頁面元素進行如click,sendkeys類的操作。但也常遇到api沒有呼叫錯,卻無 法定位到元素,或者,無法進行操作。fortunately,selenium提供了操作js的方法 execute script 可以直接執行js的指令碼。常用的j...

selenium在python中的各種方法

例項 from selenium import webdriver import time from selenium.webdriver.chrome.options import options selenium的headless模式 chrome options options chrome ...

sikuli在selenium的應用

1.sikuli簡介 sikuli 指令碼自動化技術,它通過影象識別技術來控制不能通過xpath css來識別的元素。2.我的硬體環境 pc 64位 jdk 1.8.0 25 sikuli 1.1.1 經驗證,該環境也能支援sikuli。pom.xml細節 org.sikuli sikuli cor...