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