JS在Selenium中的使用

2021-09-23 20:47:57 字數 1845 閱讀 2918

前言:

做web自動化時,一般可利用selenium定位頁面元素進行如click,sendkeys類的操作。但也常遇到api沒有呼叫錯,卻無

法定位到元素,或者,無法進行操作。

fortunately,selenium提供了操作js的方法:execute_script(),可以直接執行js的指令碼。

常用的js彙總如下:

一.控制滾動條高度

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

execute_script 的引數描述

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的指令碼。常用的js...

在js中的使用

看到一道演算法題很簡潔的解法 用的是.這樣三個點 題目描述 給定兩個排序後的陣列 a 和 b,其中 a 的末端有足夠的緩衝空間容納 b。編寫乙個方法,將 b 合併入 a 並排序。初始化 a 和 b 的元素數量分別為 m 和 n。param a param m param b param n retu...

在selenium中使用JQuery

selenium的xpath確實功能不夠強大啊,還是喜歡用jquery.今天嘗試了一下,其實是可以在selenium中用jquery來分析dom的.執行以下步驟 1.把jquery的js檔案新增到selenium server.jar的 core scripts目錄下.2.修改selenium se...