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