WebDriver介绍:
WebDriver又被称之为浏览器驱动,它是各大浏览器开发商配套开发的,用于自动化驱动浏览器的工具,它并不是Selenium开源库的一部分。只是Selenium通过W3C协议去控制了WebDriver,从而实现了对浏览器的控制。
WebDriver的版本与浏览器是一一对应的 (火狐除外),一旦浏览器的版本更新,而未能及时更新WebDriver,就会导致selenium脚本无法工作。(这东西是真恶心!)
接下来N个方法告诉大家如何解决这个问题。
Selenium自动下载驱动:
在Selenium 4.6版本之后,你就无需再操心WebDriver相关的问题,Selenium添加的Selenium Manager模块会自动下载并更新与当前环境浏览器对应的驱动,此为它还能下载指定版本的浏览器,如果用不了大概率是网络问题,请上科技。
对此模块感兴趣可以看下面翻译的官方文档↓↓↓:
Selenium Manager (Beta) 手册-官方翻译-优快云博客
Selenium 4.6 之前:
def setup_without_selenium_manager():
chrome_service = Service(executable_path='path/to/chrome.exe')
driver = webdriver.Chrome(chrome_service)
return driver
Selenium 4.6 之后:
def setup_with_selenium_manager():
driver = webdriver.Chrome()
return driver
更新Selenium版本到4.6即可自动解决相关问题,这里只展示了Chrome相关,其余浏览器同理。
使用第三方库下载驱动:
使用WebDriver_Manager下载驱动:
1、安装:
pip install webdriver_manager
2、下载方法:
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.microsoft import IEDriverManager
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from webdriver_manager.opera import OperaDriverManager
# 1.火狐FireFox
GeckoDriverManager().install()
# 2.微软IE
IEDriverManager().install()
# 3.微软Edge
EdgeChromiumDriverManager().install()
# 4.欧朋opera
OperaDriverManager().install()
3、配置
from selenium.webdriver.chrome.service import Service as ChromeService
service = ChromeService(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
4、注意:
1、ChromeDriverManager().install()返回的是一个下载地址,你可以直接print它获取。 2、这玩意吃网络,如果你的电脑网络访问github有问题,那它可能-大概-也许-完全无法使用。
手动下载驱动和配置:
>>> 谷歌 - ChromeDriver <<<
113-最新版本的浏览器和对应驱动点这里 (格式化Json 找路由下) ↓↓↓
googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
老本版本-114之前的驱动点这里 ↓↓↓
chromedriver.storage.googleapis.com/index.html
>>> 火狐 - GekoDriver: <<<
全版本驱动下载点这里 (点版本号)↓↓↓
Releases · mozilla/geckodriver
Firefox 浏览器历史版本下载点这里 ↓↓↓
Directory Listing: /pub/firefox/releases/
Firefox 与 geckodriver 版本对应关系
geckodriver 版本 | 支持的 Firefox 版本 | 支持的 Selenium 版本 |
---|---|---|
0.34.0 | Firefox 135+ | Selenium 4.11+ |
0.33.0 | Firefox 130-134 | Selenium 4.10+ |
0.32.0 | Firefox 125-129 | Selenium 4.9+ |
0.31.0 | Firefox 120-124 | Selenium 4.8+ |
0.30.0 | Firefox 115-119 | Selenium 4.7+ |
0.29.0 | Firefox 110-114 | Selenium 4.6+ |
0.28.0 | Firefox 105-109 | Selenium 4.5+ |
0.27.0 | Firefox 100-104 | Selenium 4.4+ |
0.26.0 | Firefox 95-99 | Selenium 4.3+ |
0.25.0 | Firefox 90-94 | Selenium 4.2+ |
0.24.0 | Firefox 85-89 | Selenium 4.1+ |
0.23.0 | Firefox 80-84 | Selenium 4.0+ |
0.22.0 | Firefox 75-79 | Selenium 3.14+ |
0.21.0 | Firefox 70-74 | Selenium 3.14+ |
0.20.1 | Firefox 65-69 | Selenium 3.5+ |
0.19.1 | Firefox 60-64 | Selenium 3.5+ |
0.18.0 | Firefox 55-59 | Selenium 3.4+ |
0.17.0 | Firefox 50-54 | Selenium 3.4+ |
>>> 微软Edge - Microsoft Edge WebDriver <<<
Edge驱动历史驱动下载点这里↓↓↓
Edge浏览器正式版没有历史版本,企业版点击下面下载↓↓↓
>>> 微软IE - IEDriverServer <<<
http://selenium-release.storage.googleapis.com/index.html
应该没人想找IE的历史版本吧,毕竟都退出历史舞台了。
>>> 苹果 - SafariDriver <<<
Safari 浏览器驱动已集成在 macOS 系统中,无需单独下载。
如果需要启用 SafariDriver,可以通过以下步骤:
-
打开 Safari 浏览器。
-
在菜单栏中选择 Safari > 偏好设置 > 高级,勾选 “在菜单栏中显示开发菜单”。
-
在 开发 菜单中,选择 允许远程自动化。
-
使用 Selenium 的
safaridriver
命令行工具进行自动化测试。
>>> 配置 <<<
selenium 3.0
# 配置 ChromeDriver 路径
from selenium import webdriver
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
# 配置 GeckoDriver 路径
from selenium import webdriver
driver = webdriver.Firefox(executable_path='/path/to/geckodriver')
# 配置 EdgeDriver 路径
from selenium import webdriver
driver = webdriver.Edge(executable_path='/path/to/msedgedriver')
# 配置 IEDriverServer 路径
rom selenium import webdriver
driver = webdriver.Ie(executable_path='/path/to/IEDriverServer.exe')
selenium 4.0
# 配置 ChromeDriver 路径
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service('/path/to/chromedriver')
driver = webdriver.Chrome(service=service)
# 配置 GeckoDriver 路径
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
service = Service('/path/to/geckodriver')
driver = webdriver.Firefox(service=service)
# 配置 EdgeDriver 路径
from selenium import webdriver
from selenium.webdriver.edge.service import Service
service = Service('/path/to/msedgedriver')
driver = webdriver.Edge(service=service)
# 配置 IEDriverServer 路径
from selenium import webdriver
from selenium.webdriver.ie.service import Service
service = Service('/path/to/IEDriverServer.exe')
driver = webdriver.Ie(service=service)