Selenium Headless模式:無頭瀏覽器的使用與優勢

霍格沃兹测试开发学社發表於2024-03-19

簡介

在現代Web開發和測試中,自動化工具的應用變得越來越重要。Selenium作為一種流行的自動化測試工具,為開發者提供了強大的功能來模擬使用者行為和進行網頁測試。其中,Selenium的Headless模式,即無頭瀏覽器,為開發者提供了一種更高效、更隱秘的測試方式。本文將探討Selenium Headless模式的使用方法、優勢以及實際應用場景。

什麼是Selenium Headless模式?

Selenium Headless模式是指在執行測試過程中,不開啟視覺化的瀏覽器介面,而是在後臺以無頭(Headless)方式執行。這意味著測試過程對使用者是不可見的,所有操作都在後臺自動進行。Selenium支援多種瀏覽器的Headless模式,包括Chrome、Firefox等。

無頭模式的優勢

  1. 速度與效能優勢

由於無需載入視覺化介面,Headless模式下的測試速度通常比普通模式更快。這對於大規模測試或需要頻繁執行的測試場景非常有利。

  1. 隱秘性與穩定性

Headless模式下的測試不會彈出可見的瀏覽器視窗,可以在後臺靜默執行,不影響使用者體驗。同時,由於無需考慮瀏覽器視窗的操作,測試更穩定,容易整合到持續整合(CI)系統中。

  1. 節省資源

在一些資源受限的環境中,如伺服器上的自動化測試,使用Headless模式可以節省系統資源,提高效能和穩定性。

無頭模式的使用

再使用無頭模式之前,我們需要先匯入無頭模式,使用Selenium的Headless模式非常簡單,只需在初始化瀏覽器物件時新增相應的選項即可。如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options  # 匯入無頭瀏覽器的包

opt = Options()
opt.add_argument('--headless')  # 設定為無頭
opt.add_argument('--disable-gpu')  # 設定沒有使用gpu

# 1.建立瀏覽器物件
web = Chrome(options= opt)  # 然後配置放到瀏覽器上

使用示例

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys   
from selenium.webdriver.chrome.options import Options  # 匯入無頭瀏覽器的包
 
opt = Options()
opt.add_argument('--headless')  # 設定為無頭
opt.add_argument('--disable-gpu')  # 設定沒有使用gpu
 
# 1.建立瀏覽器物件
web = Chrome(options= opt)  # 然後配置放到瀏覽器上
 
 
# 2.開啟一個網址
web.get('http://lagou.com')
 
# 定位到地址:北京,然後點選他
el = web.find_element('xpath','//*[@id="changeCityBox"]/ul/li[1]/a') #這是新版的,舊版是:find_element_by_xpath
el.click() # 點選事件
 
# 搜尋框輸入:python ,輸入回車/點選搜尋按鈕
web.find_element('xpath','//*[@id="search_input"]').send_keys('python',Keys.ENTER) # Keys.ENTER是回車
 
div_list = web.find_elements('xpath','//*[@id="jobList"]/div[1]/div')
for div in div_list:
    job_name = div.find_element('xpath','./div/div/div/a').text
    job_money = div.find_element('xpath','./div/div/div[2]/span').text
    company_name = div.find_element('xpath', './div/div[2]/div/a').text
    print(job_name,job_money,company_name) 
 

總結

透過本文的介紹,我們瞭解了Selenium Headless模式的基本概念、使用方法、優勢以及最佳實踐。Headless模式為自動化測試帶來了更高效、更隱秘的測試方式,對於提高測試效率、節省資源、提高測試穩定性都具有重要意義。

相關文章