selenium 版本介紹和底層原理分析


更多selenium相關語法點這里

一 、selenium版本介紹

是目前軟件測試行業最為核心主流的自動化軟件測試框架技術體系。

python下目前主流的版本3.141,已經有了4.0的alpha版本

selenium IDE,早期firefox下的插件,支持瀏覽器的腳本錄制與回放,存在於selenium1和2的版本下,后被淘汰

selenium+webdriver,市場有需求,谷歌牽頭搞出來,是從selenium2開始一直持續至今,最常用,后期應該會有變化,微軟2020年新出的playwright框架已經集成了各瀏覽器的驅動,不依賴driverl了,不需要我們再考慮webdriver和瀏覽器的適配問題

seleniumIDE 4.0版本,團隊一直沒有放棄IDE研發,可以完全支持多種瀏覽器的腳本錄制,純英文,還不火

selenium Grid,分布式的概念,企業用的不多,但很重要。可以將原有的自動化測試框架從單體服務模式轉變為M/S(主從節點)形態的分布式架構形式來實現,可以結合用例並發的模式來存在,比如需要同時起500個瀏覽器,一台機子肯定不行,同時用100台機子來均攤 ,實現並發,而傳統的線性測試需要一個一個來。

二、selenium底層

2.1 WebDriver是什么?

WebDriver就是一個瀏覽器驅動?其實並不能算是一個驅動,沒有那么高級。 就是一個基於HTTP網絡協議進行數據交互的代理服務。 在selenium+driver+python運行過程中,driver對象的指令的下發內容,已經封裝在selenium源碼中

2.2 底層實現

selenium各種方法的底層其實就是用execute執行各種js

 

2.3 八種方法的本質

driver.find_element_by_id('kw') # 此類方法底層還是調用find_element,就是個套娃多此一舉

driver.find_element('id', 'kw') # 最基本的,4.0 alpha版本也是推薦這個
driver.find_element(By.ID, 'kw') # 我喜歡這個,不用寫那么多字符串

# 從以下By源碼可以看出,By其實就是將八種方法的字符串封裝成了類屬性
class By(object):
   ID = "id"
   XPATH = "xpath"
   LINK_TEXT = "link text"
   PARTIAL_LINK_TEXT = "partial link text"
   NAME = "name"
   TAG_NAME = "tag name"
   CLASS_NAME = "class name"
   CSS_SELECTOR = "css selector"

三、javascript

1.web自動化測試框架的原理就是通過js來實現對web元素的操作
selenium:它將我們要進行自動化操作的網頁內嵌到它自己的網頁,然后通過腳本語言js去執行自動化操作
自動化測試框(appium,qtp,macaca,roboframework)底層用的也是selenium
接口測試,了解接口的本質,接口的原理,接口發送網絡請求通信的原理,
2.提高我們自動化用例執行的效率和穩定性
時間日歷控件
文件上傳
點擊
輸入
勾選
3.selenium難以實現的操作
a.一些隱藏的按鈕,通過js更改元素的屬性,顯示隱藏的按鈕
b.滾動條
c.前端限制輸入,移除readonly屬性

四、等待

等待的三大方式:
1.強制等待
  所有自動化學習者,最先接觸的等待就是強制等待(Sleep)
  作用:當代碼運行到強制等待這一行的時候,無論出於什么情況,都強制性等待指定的時間
  優勢:簡單入門,調試的一把好手
  劣勢:只能夠對單次生效,無法做有效的判斷,會浪費大量的時間
2.隱式等待
  藏起來的等待,一次設置,終生有效,針對於當下的WebDriver對象,進行的等待時長的設置直接通過WebDriver對象的implicitly_wait()方法進行設置
  作用:對WebDriver對象設置全局等待,每一次操作,如遇到頁面加載,則默認進入隱式等待,如遇元素無法找到,則進入隱式等待,當達到等待最大時長,則繼續進行后續的代碼
  優勢:設置一次即可,全局使用,而且等不到不會報錯
  劣勢:必須等待頁面加載完成才會進入到后續的操作,或者等待超時再進入后續的操作
3.顯式等待
  指名道姓的等,專門用於等待指定的元素對象
  通過導入from selenium.webdriver.support.wait import WebDriverWait
  優勢:專門用於對指定的某一個元素進行等待

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM