?
無頭瀏覽器
無頭瀏覽器,即 Headless Browser,是一種沒有界面的瀏覽器。它擁有完整的瀏覽器內(nèi)核,包括 JavaScript 解析引擎、渲染引擎等。與普通瀏覽器最大的不同是,無頭瀏覽器執(zhí)行過程中看不到運(yùn)行的界面,但是我們依然可以用 GUI 測試框架的截圖功能截取它執(zhí)行中的頁面。在這里強(qiáng)調(diào)一下,好多文章說無頭瀏覽器不做渲染,其實(shí)這個說法是不準(zhǔn)確的,如果無頭瀏覽器不做渲染,那么怎么進(jìn)行截圖呢?可能有人又要說,如果無頭瀏覽器都做渲染的話,那速度又怎么保障呢?個人觀點(diǎn),應(yīng)該是在需要截屏的時候才進(jìn)行頁面元素的渲染!如果這個觀點(diǎn)不對,歡迎留言討論。這里總結(jié)一下瀏覽器如何渲染網(wǎng)頁,簡單的說瀏覽器的渲染機(jī)制可以分為五步:
第一步:解析html,構(gòu)建DOM樹
第二步:解析CSS,生成CSSOM樹
第三步:合并dom樹和css規(guī)則樹,生成render渲染樹
第四步:根據(jù)render渲染樹進(jìn)行布局
第五步:調(diào)用GPU對渲染樹進(jìn)行繪制,合成圖層,顯示在屏幕上
在這里就可以看出,當(dāng)無頭瀏覽器不做渲染時,速度顯然會提升很多!
無頭瀏覽器的主要應(yīng)用場景
無頭瀏覽器主要應(yīng)用在: GUI 自動化測試、頁面監(jiān)控、網(wǎng)絡(luò)爬蟲以及沒有桌面的linux系統(tǒng)中。在這里我們重點(diǎn)說一下 GUI 自動化測試,在 GUI 測試過程中,使用無頭瀏覽器的好處主要體現(xiàn)在以下幾個方面:
測試執(zhí)行速度更快。 無頭瀏覽器無需加載 CSS 以及渲染頁面,在測試用例的執(zhí)行速度上有很大的優(yōu)勢。
減少對測試執(zhí)行的干擾。 可以減少操作系統(tǒng)以及其他軟件(比如殺毒軟件等)不可預(yù)期的彈出框,對瀏覽器測試的干擾。
一臺機(jī)器上同時運(yùn)行不同廠商的無頭瀏覽器(無頭瀏覽器占用內(nèi)存資源,要比正常瀏覽器?。?,實(shí)現(xiàn)測試用例的并發(fā)執(zhí)行。
無頭瀏覽器缺點(diǎn)
1. 不能完全模擬真實(shí)的用戶行為
2. 不便于調(diào)試(各個瀏覽器的開發(fā)者工具)
主流的無頭瀏覽器概述
Chrome Headless,Chrome從59版本開始支持
Firefox Headless,F(xiàn)irefox從56版本開始支持
PhantomJS,使用JavaScript編寫的無頭瀏覽器,能夠支持Windows, macOS, Linux
Splash,使用Python編寫的無頭瀏覽器,使用WebKit作為引擎
HtmlUnit,使用Java編寫的無頭瀏覽器,使用Rhino engine作為引擎
無頭瀏覽器在selenium中的應(yīng)用
在我們測試同學(xué)的實(shí)際工作中,大概率使用無頭瀏覽器的場景就是通過selenium 進(jìn)行自動化測試了,在這里默認(rèn)同學(xué)們已經(jīng)了解了selenium的安裝和使用方法,所以直接上通過python實(shí)現(xiàn)調(diào)用無頭瀏覽器的代碼
import time
from selenium import webdriver
options = webdriver.ChromeOptions()
options.set_headless()
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.baidu.com/')
time.sleep(3)
print(driver.page_source)
driver.close()
其實(shí),selenium在chrome中實(shí)現(xiàn)headless非常的簡單,只需要下面兩句代碼即可
options.set_headless()
driver = webdriver.Chrome(chrome_options=options)文章來源:http://www.zghlxwxcb.cn/news/detail-411291.html
上面的代碼,實(shí)測可以正常運(yùn)行!原創(chuàng)不易,如果文章幫到了你,勞煩點(diǎn)贊轉(zhuǎn)發(fā)!文章來源地址http://www.zghlxwxcb.cn/news/detail-411291.html
到了這里,關(guān)于干貨!一文搞定無頭瀏覽器的概念以及在selenium中的應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!