前言 selenium并不是萬能的,有時候頁面上操作無法實現(xiàn)的,這時候就需要借助JS來完成了。 常見場景: 當頁面上的元素超過一屏后,想操作屏幕下方的元素,是不能直接定位到,會報元素不可見的。 這時候需要借助滾動條來拖動屏幕,使被操作的元素顯示在當前的屏幕上。 滾動條是無法直接用定位工具來定位的。selenium里面也沒有直接的方法去控制滾動條, 這時候只能借助J了,還好selenium提供了一個操作js的方法: execute_script(),可以直接執(zhí)行js的腳本。 一、JavaScript簡介 1.JavaScript是世界上最流行的腳本語言,因為你在電腦、手機、平板上瀏覽的所有的網(wǎng)頁, 以及無數(shù)基于HTML5的手機App,交互邏輯都是由JavaScript驅(qū)動的。簡單地說, JavaScript是一種運行在瀏覽器中的解釋型的編程語言。 那么問題來了,為什么我們要學(xué)JavaScript? 好的補充。對js不太熟悉的,可以網(wǎng)上找下教程,簡單了解些即可。 http://www.w3school.com.cn/js/index.asp4 ![]() 二、控制滾動條高度 1.滾動條回到頂部: js="var q=document.getElementById('id').scrollTop=0" js="var q=document.documentElement.scrollTop=10000" 3.這里可以修改scrollTop 的值,來定位右側(cè)滾動條的位置,0是最上面,10000是最底部。 版權(quán)所有,微信公眾號:yoyoketang 三、橫向滾動條 driver.execute_script(js) 3.第一個參數(shù)x是橫向距離,第二個參數(shù)y是縱向距離 ![]() 四、Chrome瀏覽器 1.以上方法在Firefox上是可以的,但是用Chrome瀏覽器,發(fā)現(xiàn)不管用。 2.Chrome瀏覽器解決辦法: js = "var q=document.body.scrollTop=0"
五、元素聚焦 在什么位置,有可能每次打開的頁面不一樣,元素所在的位置也不一樣,怎么辦呢? 2.這個時候我們可以先讓頁面直接跳到元素出現(xiàn)的位置,然后就可以操作了。同樣需要借助JS去實現(xiàn)。 target = driver.find_element_by_xxxx()
六、獲取瀏覽器名稱:driver.name 1.為了解決不同瀏覽器操作方法不一樣的問題,可以寫個函數(shù)去做兼容。 2.先用driver.name獲取瀏覽器名稱,然后用if語句做個判斷 ![]() 七、兼容性 ![]() 八、scrollTo函數(shù)
樓下有個小伙伴說這個scrollTo函數(shù)不存在兼容性問題,小編借花獻佛了。
--scrollHeight 獲取對象的滾動高度。
--scrollLeft 設(shè)置或獲取位于對象左邊界和窗口中目前可見內(nèi)容的最左端之間的距離。 --scrollTop 設(shè)置或獲取位于對象最頂端和窗口中可見內(nèi)容的最頂端之間的距離。 --scrollWidth 獲取對象的滾動寬度。 scrollTo函數(shù)不存在兼容性問題,直接用這個函數(shù)就可以了
#滾動到底部 js = "window.scrollTo(0,document.body.scrollHeight)" driver.execute_script(js) #滾動到頂部 js = "window.scrollTo(0,0)" driver.execute_script(js)
九、參考代碼如下: #滾動到底部
JS功能還是很強大的,它還可以處理富文本、內(nèi)嵌滾動條的問題,下次有空了再整理下。 |
|
來自: 淡茶飄香cl > 《selenium》