Selenium及python實現滾動操作多種方法

2021-10-10 14:24:38 字數 2646 閱讀 5859

更多程式設計教程請到:菜鳥教程

高州陽光論壇

selenium並不是萬能的,有時候頁面上操作無法實現的,這時候就需要借助js來完成了。

當頁面上的元素超過一屏後,想操作螢幕下方的元素,是不能直接定位到,會報元素不可見的。

這時候需要借助滾動條來拖動螢幕,使被操作的元素顯示在當前的螢幕上。滾動條是無法直接用定位工具來定位的。

selenium裡面也沒有直接的方法去控制滾動條,這時候只能借助j了,還好selenium提供了乙個操作js的方法:execute_script(),可以直接執行js的指令碼。

方法一:使用js指令碼直接操作

# 滾動到頂部

def scroll_top(self):

if self.driver.name == "chrome":

js = "var q=document.body.scrolltop=0"

else:

js = "var q=document.documentelement.scrolltop=0"

return self.driver.execute_script(js)

def scroll_foot(self):

if self.driver.name == 「chrome」:

js = 「var q=document.body.scrolltop=1000」

else:

js = 「var q=document.documentelement.scrolltop=1000」

return self.driver.execute_script(js)

或者:

js="var q=document.getelementbyid('***').scrolltop=10000"

driver.execute_script(js)

這裡的id為滾動條的id,但js中沒有xpath的方法,所以滾動條沒有id的網頁此方法不適用

上面展示的是上下方向的滾動條,接下來介紹左右方向的滾動條的操作方法

#左右方向的滾動條可以使用window.scrollto(左邊距,上邊距)方法

#example

js="window.scrollto(200,1000)"

driver.execute_script(js)

方法二:使用 js 指令碼拖動到指定位置

target = driver.find_element_by_id("***")

driver.execute_script("arguments[0].scrollintoview();", target) #拖動到可見的元素去

該方法可以將滾動條拖動到需要顯示的元素位置,此方法用途比較廣

方法三:根據頁面顯示進行變通,傳送tab鍵

比如,密碼是輸入框,正常手工操作時,可以通過tab鍵會切換到密碼框中,所以根據此思路,在python中也可以傳送tab鍵來切換,使元素顯示

from selenium.webdriver.common.keys import keys

driver.find_element_by_id("****").send_keys(keys.tab)

方法四:scrollto函式

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

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

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

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

#滾動到底部

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

driver.execute_script(js)

#滾動到頂部

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

driver.execute_script(js)

其他:

robotframe work框架中,selenium2library裡面有乙個非常好用的功能focus,會自動定位到元素。

**塊

driver.find_element_by_xpath("//div[@id='search']/div/span/input").click()

target = driver.find_element_by_id("_easyui_tree_17")

driver.execute_script("arguments[0].scrollintoview();", target) #拖動到可見的元素去

driver.find_element_by_xpath("//span[@class='tree-title'][text()='專業測試.修改後/123456']").click()

此方法與我們在python自己寫的方法二)一致,工具給我們做了封裝。

Python安裝selenium及報錯原因

想用python selenium 呼叫firefox瀏覽器寫個登陸網頁的指令碼,發現selenium需要手動安裝,決定寫一下selenium的安裝教程。環境 windows 7 python.3.6.1 教程 1.使用cmd開啟windows的終端,在終端裡切換目錄到python的安裝目錄裡 ps...

Python3 Selenium3安裝及環境配置

一 python安裝 二 selenium安裝 python3.x安裝後就預設就會有pip pip.exe預設在python的scripts路徑下 使用pip安裝selenium pip install selenium 因我已安裝selenium,不可重複安裝。可使用以下命令檢視是否安裝成功 三 ...

selenium的版本及操作

顯示等待 在 一段時間內 查到元素就執行,查不到報錯。隱示等待 類似於time.sleep 10 在等待一段時間後,才開始查詢元素。close 關閉當前頁面。quit 關閉瀏覽器。切換內嵌frame fr browser.find element by xpath iframe contains s...