由于在實(shí)際的測試環(huán)境下,使用圖形界面的瀏覽器占用測試機(jī)資源過大效率低, 一般來說,在調(diào)試好腳本的基礎(chǔ)上,拋開瀏覽器圖形界面執(zhí)行測試用例的.
現(xiàn)在可以使用的無頭瀏覽器有很多,這里介紹一個使用方便的無頭瀏覽器的解決方案 -- 使用Chrome的禁用圖形界面運(yùn)行.
一般使用Chrome進(jìn)行腳本運(yùn)行時,使用的是Chrome類實(shí)例化的瀏覽器對象, 其實(shí)還有另一個類提供了對瀏覽器的配置 -- ChromeOptions(
selenium.webdriver.ChromeOptions)
from selenium import webdriver
# 創(chuàng)建出啟動瀏覽器所需要配置 -- 實(shí)例化ChromeOptions瀏覽器選項(xiàng)對象
co = webdriver.ChromeOptions()
# 構(gòu)建配置信息 -- 通過瀏覽器選項(xiàng)對象調(diào)用配置方法
co.headless = True # 設(shè)置瀏覽器為無頭模式
# 將配置信息加入到瀏覽器啟動 -- 實(shí)例化瀏覽器驅(qū)動對象添加屬性option值
driver = webdriver.Chrome(options=co)
# 設(shè)置瀏覽器頁面大小為常用窗口大小1366*768
driver.set_window_size(1366, 768)
# 打開頁面, 進(jìn)行頁面操作
driver.get("http://www.baidu.com")
# 業(yè)務(wù)操作
driver.find_element_by_id("kw").send_keys("chrome")
driver.get_screenshot_as_file("./a.png")
# 退出瀏覽器驅(qū)動對象
driver.quit()
首先: 明確Selenium的編寫自動化測試腳本的基本步驟
模擬用戶打開瀏覽器 -- 實(shí)例化瀏覽器驅(qū)動對象
模擬輸入網(wǎng)址操作 -- 驅(qū)動對象調(diào)用get方法
模擬用戶頁面操作 -- 驅(qū)動對象頁面定位和元素操作
模擬用戶關(guān)閉瀏覽器 -- 驅(qū)動對象調(diào)用quit方法
from selenium import webdriver
# 1. 模擬用戶打開瀏覽器 -- 實(shí)例化瀏覽器驅(qū)動對象
driver = webdriver.Chrome()
# 2. 模擬輸入網(wǎng)址操作 -- 驅(qū)動對象調(diào)用get方法
driver.get("http://www.baidu.com")
# 3. 模擬用戶頁面操作 -- 驅(qū)動對象頁面定位和元素操作
driver.find_element_by_id("kw").send_keys("chrome")
driver.get_screenshot_as_file("./a.png")
# 4. 模擬用戶關(guān)閉瀏覽器 -- 驅(qū)動對象調(diào)用quit方法
driver.quit()
然后: 針對驅(qū)動對象的實(shí)例化操作進(jìn)行擴(kuò)展 -- ChromeOptions
上面瀏覽器是默認(rèn)啟動的瀏覽器 -- 沒有進(jìn)行任何配置 -- 如何實(shí)現(xiàn)瀏覽器的配置啟動呢?
創(chuàng)建出啟動瀏覽器所需要配置 -- 實(shí)例化ChromeOptions瀏覽器選項(xiàng)對象
構(gòu)建配置信息 -- 通過瀏覽器選項(xiàng)對象調(diào)用配置方法
將配置信息加入到瀏覽器啟動 -- 實(shí)例化瀏覽器驅(qū)動對象添加屬性option值
from selenium import webdriver
# 創(chuàng)建出啟動瀏覽器所需要配置 -- 實(shí)例化ChromeOptions瀏覽器選項(xiàng)對象
co = webdriver.ChromeOptions()
# 構(gòu)建配置信息 -- 通過瀏覽器選項(xiàng)對象調(diào)用配置方法
co.headless = True # 設(shè)置瀏覽器為無頭模式
# 將配置信息加入到瀏覽器啟動 -- 實(shí)例化瀏覽器驅(qū)動對象添加屬性option值
driver = webdriver.Chrome(options=co)
# 打開頁面, 進(jìn)行頁面操作
driver.get("http://www.baidu.com")
# 業(yè)務(wù)操作
driver.find_element_by_id("kw").send_keys("chrome")
driver.get_screenshot_as_file("./a.png")
# 退出瀏覽器驅(qū)動對象
driver.quit()
最后: 優(yōu)化一下上面的代碼,窗口太小無法看到整個頁面 -- 最大化瀏覽器窗口
注意: 這里有一個有意思的現(xiàn)象: driver.maximize_window() 在這里是無法起效的
所以需要使用另一個控制窗口大小的方法driver.setwindowsize(x,y)
from selenium import webdriver
# 創(chuàng)建出啟動瀏覽器所需要配置 -- 實(shí)例化ChromeOptions瀏覽器選項(xiàng)對象
co = webdriver.ChromeOptions()
# 構(gòu)建配置信息 -- 通過瀏覽器選項(xiàng)對象調(diào)用配置方法
co.headless = True # 設(shè)置瀏覽器為無頭模式
# 將配置信息加入到瀏覽器啟動 -- 實(shí)例化瀏覽器驅(qū)動對象添加屬性option值
driver = webdriver.Chrome(options=co)
# 設(shè)置瀏覽器頁面大小為常用窗口大小1366*768
driver.set_window_size(1366, 768)
# 打開頁面, 進(jìn)行頁面操作
driver.get("http://www.baidu.com")
# 業(yè)務(wù)操作
driver.find_element_by_id("kw").send_keys("chrome")
driver.get_screenshot_as_file("./a.png")
# 退出瀏覽器驅(qū)動對象
driver.quit()
總結(jié)
如果需要更多瀏覽器設(shè)置,最好的方法可以進(jìn)入ChromeOptions類中讀懂代碼,可以學(xué)到很多。喜歡記得關(guān)注一下哦。