1、前言
在我們使用 Selenium 進(jìn)行 UI 自動(dòng)化測(cè)試時(shí),常常會(huì)因?yàn)闉g覽器驅(qū)動(dòng)與瀏覽器版本不匹配,而導(dǎo)致自動(dòng)化測(cè)試無法執(zhí)行,需要手動(dòng)去下載對(duì)應(yīng)的驅(qū)動(dòng)版本,并替換原有的驅(qū)動(dòng),可能還會(huì)遇到跨操作系統(tǒng)進(jìn)行測(cè)試的時(shí)候,以及瀏覽器自動(dòng)升級(jí)后,也會(huì)導(dǎo)致與驅(qū)動(dòng)不匹配的問題。
為了解決這個(gè)問題,可以使用 webdriver-manager,它可以幫助我們自動(dòng)識(shí)別當(dāng)前運(yùn)行環(huán)境下的系統(tǒng)信息以及對(duì)應(yīng)瀏覽器信息,并自動(dòng)下載對(duì)應(yīng)瀏覽器驅(qū)動(dòng)。
2、簡介
webdriver-manager 庫提供了自動(dòng)管理不同瀏覽器驅(qū)動(dòng)程序的方法。
主要思想是簡化不同瀏覽器的二進(jìn)制驅(qū)動(dòng)程序的管理。
目前支持:
ChromeDriver
EdgeChromiumDriver
GeckoDriver
IEDriver
OperaDriver
安裝:
pip?install?webdriver_manager
如果你想學(xué)習(xí)自動(dòng)化測(cè)試,我這邊給你推薦一套視頻,這個(gè)視頻可以說是B站播放全網(wǎng)第一的自動(dòng)化測(cè)試教程,同時(shí)在線人數(shù)到達(dá)1000人,并且還有筆記可以領(lǐng)取及各路大神技術(shù)交流:798478386?????
15天學(xué)會(huì)性能測(cè)試,通俗易懂詳細(xì)教學(xué),Jmeter性能測(cè)試實(shí)戰(zhàn)(集群壓測(cè),全鏈路壓測(cè),性能調(diào)優(yōu),瓶頸分析)極速掌握,干就完事!_嗶哩嗶哩_bilibili15天學(xué)會(huì)性能測(cè)試,通俗易懂詳細(xì)教學(xué),Jmeter性能測(cè)試實(shí)戰(zhàn)(集群壓測(cè),全鏈路壓測(cè),性能調(diào)優(yōu),瓶頸分析)極速掌握,干就完事!共計(jì)27條視頻,包括:1.【性能測(cè)試】什么是性能測(cè)試以及性能測(cè)試的價(jià)值和目的、2.【性能測(cè)試】真實(shí)企業(yè)性能測(cè)試指標(biāo)詳解以及指標(biāo)測(cè)算、3.【性能測(cè)試】真實(shí)企業(yè)中性能測(cè)試流程以及細(xì)節(jié)剖析等,UP主更多精彩視頻,請(qǐng)關(guān)注UP賬號(hào)。https://www.bilibili.com/video/BV1B14y1D7X9/?spm_id_from=333.337
3、示例
原始代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
?
運(yùn)行后報(bào)錯(cuò),發(fā)現(xiàn)此版本的 ChromeDriver 與當(dāng)前瀏覽器版本不匹配,無法執(zhí)行。
更新代碼(導(dǎo)入webdriver-manager,運(yùn)行腳本,webdriver-manager 將檢查當(dāng)前使用的瀏覽器版本,并自動(dòng)下載/更新匹配的瀏覽器驅(qū)動(dòng)程序,這樣將始終保持瀏覽器版本與驅(qū)動(dòng)程序是互相匹配的。)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
driver.get('https://www.baidu.com/')
4、更多
作者在示例中使用的是 Selenium 3,webdriver-manager 也支持 Selenium 4 的。
1、Chrome
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
2、Chromium
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromiumService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(service=ChromiumService(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))
3、Brave
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as BraveService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(service=BraveService(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()))
4、Edge
# selenium 3
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(EdgeChromiumDriverManager().install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))
5、Firefox
# selenium 3
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
6、IE
# selenium 3
from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(IEDriverManager().install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.ie.service import Service as IEService
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(service=IEService(IEDriverManager().install()))
7、Opera
# selenium 3
from selenium import webdriver
from selenium.webdriver.chrome import service
from webdriver_manager.opera import OperaDriverManager
webdriver_service = service.Service(OperaDriverManager().install())
webdriver_service.start()
driver = webdriver.Remote(webdriver_service.service_url, webdriver.DesiredCapabilities.OPERA)
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome import service
from webdriver_manager.opera import OperaDriverManager
webdriver_service = service.Service(OperaDriverManager().install())
webdriver_service.start()
options = webdriver.ChromeOptions()
options.add_experimental_option('w3c', True)
driver = webdriver.Remote(webdriver_service.service_url, options=options)
8、自定義日志記錄文章來源:http://www.zghlxwxcb.cn/news/detail-626828.html
如果需要使用自定義日志記錄,可以創(chuàng)建一個(gè)記錄器并使用 set_logger()?進(jìn)行設(shè)置。文章來源地址http://www.zghlxwxcb.cn/news/detail-626828.html
import logging
from webdriver_manager.core.logger import set_logger
logger = logging.getLogger("custom_logger")
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())
logger.addHandler(logging.FileHandler("custom.log"))
set_logger(logger)
到了這里,關(guān)于使用webdriver-manager解決瀏覽器與驅(qū)動(dòng)不匹配所帶來自動(dòng)化無法執(zhí)行的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!