摘要:了解模式指的是不需要用戶界面的瀏覽器,這種瀏覽器在自動化測試和爬蟲領域有著廣泛的應用。實踐使用瀏覽器的模式進行自動化測試,你需要先滿足以下前提運行環境或者或者最新版已加入萬事俱備,廢話不多說我們直接上演示代碼。
了解HEADLESS模式
HEADLESS BROWSER 指的是不需要用戶界面的瀏覽器,這種瀏覽器在自動化測試和爬蟲領域有著廣泛的應用。
例如你想在網頁上運行一些測試,從網頁抓取信息,檢查瀏覽器訪問某些資源的狀態,定時截取網頁等等,你需要的是瀏覽器處理網頁但不一定需要瀏覽器界面,這些情況都是HEADLESS BROWSER的應用場景。
Chrome 從 59.0 開始支持HEADLESS模式(2017年5月),Firefox從 55.0 開始也支持了HEADLESS模式(2017年9月)。也就是在今年2018年的4月份,老牌的無頭瀏覽器 PhantomJS 的核心開發者宣布不再維護該項目,因為Chrome 和Firefox的HEADLESS模式已經足夠好并可以替代PhantomJS。
實踐 Selenium + HEADLESS使用瀏覽器的HEADLESS模式進行自動化測試,你需要先滿足以下前提:
Python + Selenium 運行環境
Chrome 59+ 或者 Firefox 55+
ChromeDriver 或者 GeckoDriver 最新版已加入PATH
萬事俱備,廢話不多說我們直接上演示代碼。
Chrome版實例from time import sleep from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--headless") options.add_argument("--disable-gpu") # 允許在無GPU的環境下運行,可選 options.add_argument("--window-size=1920x1080") # 建議設置 browser = webdriver.Chrome(chrome_options=options) browser.get("https://www.baidu.com") browser.find_element_by_id("kw").send_keys("HELLO") browser.find_element_by_id("su").click() sleep(1) # 簡單粗暴的等待,實際項目中勿用 assert browser.title == u"HELLO_百度搜索" browser.save_screenshot("chrome-headless-test.png")Firefox版實例
from time import sleep from selenium import webdriver from selenium.webdriver.firefox.options import Options options = Options() options.add_argument("--headless") # options.add_argument("--window-size=1920x1080") # Firefox無效 browser = webdriver.Firefox(firefox_options=options) browser.set_window_size(1280, 1024) # 啟動后設置瀏覽器大小,但是高度會隨著訪問的網頁變化 browser.get("https://www.baidu.com") browser.find_element_by_id("kw").send_keys("HELLO") browser.find_element_by_id("su").click() sleep(1) assert browser.title == u"HELLO_百度搜索" browser.save_screenshot("firefox-headless-test.png")總結
瀏覽器HEADLESS模式可以讓程序運行的環境更貼近用戶訪問的真實環境,相對于模擬UserAgent等方式得出的數據也會更加準確可靠。
尤其在自動化測試領域,HEADLESS也有取代傳統的帶界面的自動化測試的趨勢,有一些公司已經將實踐投入生產中。我們可以在調試自動化測試時使用用戶界面,當部署到持續集成環境中是啟用HEADLESS,并開啟多線程使用并行的方式來運行測試案例,這樣效率會大大提高,而且因為界面被干擾而導致測試失敗的概率也會降低。
總的來說,至少在端對端的自動化測試中,HEADLESS模式沒有明顯的缺點,甚至可以成為網頁自動化測試進化的下一個目標。
參考文檔https://developer.mozilla.org...
https://intoli.com/blog/runni...
https://developers.google.com...
https://about.gitlab.com/2017...
關于作者:Toby Qin, Python 技術愛好者,目前從事測試開發相關工作,轉載請注明原文出處。
歡迎關注我的博客 https://betacat.online,你可以到我的公眾號中去當吃瓜群眾。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41742.html
注:文章聚合了現在 headless chrome 介紹和使用方式 包含了三個部分 chrome 在 mac 上的安裝和簡單使用(來自官方) 利用 selenium 的 webdrive 驅動 headless chrome(自己添加) 利用Xvfb方式實現偽 headless chrome 概念 Headless模式解決了什么問題: 自動化工具例如 selenium 利用有頭瀏覽器進行測試...
摘要:前端每周清單第期現狀分析與優化策略單元測試爬蟲作者王下邀月熊編輯徐川前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。 showImg(https://segmentfault.com/img/remote/1460000011008022); 前端每周清單第 29 期:Web 現狀分析與優化策略...
摘要:使用圖設置瀏覽器語言為英文方法圖設置瀏覽器語言為英文方法結果功能該功能最常見的用法就是使用該功能配置屏蔽網站對爬蟲等自動化程序的檢測。 rf(即robotframework)是自動化測試常用的框架之一,在前端自動化測試中常與webdriver驅動器,以及rf的selenium2library...
摘要:抓取并生成預先呈現的內容即。自動表單提交,測試,鍵盤輸入等。創建一個最新的自動化測試環境。使用最新的的和瀏覽器功能,直接在最新版本的瀏覽器中運行測試。捕獲您網站的時間線跟蹤,以幫助診斷性能問題。 木偶 Puppeteer 更友好的 Headless Chrome Node API木偶也是有心的 (=?ω?=) showImg(https://segmentfault.com/img/b...
摘要:注意,是叫做,不是。兩款瀏覽器同根同源,它們有著同樣的,但配色不同,由藍紅綠黃四種顏色組成,而由不同深度的藍色構成。另外是基于的新特性實現的,所以它的一些執行也支持異步操作,效率相對于來說也提高了。是否響應信號,一般是命令,默認是。 如果大家對 Python 爬蟲有所了解的話,想必你應該聽說過 Selenium 這個庫,這實際上是一個自動化測試工具,現在已經被廣泛用于網絡爬蟲中來應對 ...
閱讀 3020·2021-11-22 12:06
閱讀 603·2021-09-03 10:29
閱讀 6553·2021-09-02 09:52
閱讀 2023·2019-08-30 15:52
閱讀 3417·2019-08-29 16:39
閱讀 1195·2019-08-29 15:35
閱讀 2068·2019-08-29 15:17
閱讀 1425·2019-08-29 11:17