感覺Selenium不好學?那你可能需要的是Helium
做Web自動化的小夥伴們都知道Selenium,可以全面模擬各種網頁上的鍵盤、滑鼠、事件。
Selenium雖好,但是定位並不容易,不論CSSselector,還是XPATH,學習曲線也還是有的。
有沒有更簡單的Web自動化測試工具?
有!老司機今天給大家介紹一個比Selenium更簡單的自動化測試工具——Helium
Helium是Python的一個類庫,需要事先用pip方式安裝。
pipinstall helium |
確保Chrome或者FireFox瀏覽器已經安裝。不需要配合Firefox和Chrome瀏覽器的驅動Geckodriver不需要ChromeDriver。
從安裝上,Helium就開始走簡約路線了。
下面舉幾個具體例子,小夥伴們一起看看Helium的讓人瞠目結舌的簡潔。
1一個開啟百度首頁,執行搜尋
Helium的程式碼如下
定位都省掉了,太簡潔了!Helium不香嗎?
如果啟動火狐瀏覽器,那麼只需要使用 start_firefox()就可以了。
2等待DOM元素出現
Helium的程式碼只需要一行:
讓我們對比一下Selenium的寫法:
是不是Helium快多了?
3點選網頁上的連結
在網頁上定位到某個連結,再點選,這是Web自動化測試的基本步驟,用Helium實現起來,又雙叒叕是短短一句話搞定
小夥伴,你沒看錯,
“找到‘新聞’連結,再點選該連結”
就是click(Link(“新聞”)) 這麼短短一句...
老司機試驗到這裡,已經覺得Helium讓自動化測試真的降了不止一個難度。
但是這就夠了嗎?還有更驚悚的操作!
還是百度首頁上,點選“新聞”右側的那個連結。
小夥伴們可以自行腦補一下Selenium怎麼定位的。
Helium的操作,讓老司機驚掉下巴——又是短短一句話搞定:
只加了“to_right_of=”,搞定!簡單到難以置信!
4高階功能:無介面瀏覽器
某些特殊情況下,小夥伴們在執行自動化測試時候,不需要真的出現一個瀏覽器視窗。我們通常把這種叫做“無頁面瀏覽器”操作。典型的代表是PhantomJS。
不需要任何外援,只需要一個引數“headless=True”,Helium自己就可以做到:
start_chrome('www.baidu.com', headless=True)
看了上面這麼多例子,小夥伴們想問:究竟Helium是何方神聖?
其實Helium是Selenium Python的高階封裝,遮蔽了很多細節。官方表示:完成同樣功能,Helium比Selenium少30% ~ 50% 程式碼量。
Helium是一個開源框架,還在繼續開發中,目前只支援Firefox和Chrome兩種瀏覽器。
此外,helium還有更多優點:
-
Web Driver管理:helium自帶ChromeDriver和Geckodriver的副本,所以使用者不需要下載瀏覽器驅動並配置路徑上。相對於Selenium3,不要太友好!
-
iFrame處理:與Selenium不同的是,Helium可以自由互動不同iFrame中的元素,而不用“switch to”來切換。
-
視窗管理:Helium會注意彈出視窗的開啟或關閉,並像使用者一樣聚焦/切換。使用者還可以通過視窗標題的(甚至部分標題)輕鬆切換到視窗。不再需要迭代Selenium視窗控制代碼。
-
Implicit waits:預設情況下,如果Selenium使用者嘗試單擊DOM元素,但該元素尚未出現在頁面上,則指令碼將失敗。而Helium會最多等待10秒,只等元素出現。
-
Explicit waits:Helium提供了一個更好的API來等待web頁面上的條件成為現實。
最後,Helium是個開源專案,專案地址:
http://8rr.co/M3V7
小夥伴們可以自己貢獻程式碼,為Helium添磚加瓦!