一 背景
在使用selenium的时候,用谷歌浏览器需要经常更新驱动,在网上找到了webdriver-manager在各浏览器的用法,但因为一般用法未更新谷歌驱动到我需要的anaconda3+谷歌浏览器安装位置的路径下,所以每次运行都会下载一次,很慢,就借助了webdriver-manager已实现的功能,实现将谷歌驱动下载到指定位置。
二 webdriver-manager各浏览器一般用法
以下这种方法虽然可以用,但因为未更新谷歌驱动到我需要的anaconda路径下,所以每次运行都会下载一次,很慢
#!/usr/bin/env python
# encoding: utf-8
from selenium import webdriver
from time import sleep
from webdriver_manager.chrome import ChromeDriverManager # Chrome
from webdriver_manager.firefox import GeckoDriverManager # FireFox
from webdriver_manager.microsoft import IEDriverManager, EdgeChromiumDriverManager # IE、Edge
url = 'https://www.baidu.com/'
# 应用举例
def wb_test():
try:
driver = webdriver.Chrome()
except:
# 异常时,再去下载driver
# selenium3.x 用法
driver = webdriver.Chrome(ChromeDriverManager().install()) # Chrome
# driver = webdriver.Firefox(GeckoDriverManager().install()) # FireFox
# driver = webdriver.Edge(EdgeChromiumDriverManager().install()) # Edge
# selenium4.x 用法
# driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
driver.get(url)
sleep(1)
driver.close()
if __name__ == '__main__':
wb_test()
三 下载谷歌驱动到指定位置示例(优化版本)
思路:利用webdriver-manager下载浏览器对应版本的谷歌驱动,找到存放路径后,shutil.copyfile(src, dest)将下载的谷歌驱动移动到需要的位置
#!/usr/bin/env python
# encoding: utf-8
'''
@Author : 草木零
@Software: PyCharm
@File : Update_chromeDriver.py
@Time : 2023/8/1 18:54
@desc : 借助webdriver,自动更新谷歌驱动到指定位置
'''
import shutil
from selenium import webdriver
from time import sleep
from webdriver_manager.chrome import ChromeDriverManager # Chrome
# 借助webdriver下载的谷歌驱动,移动到指定位置
def update_driver():
# selenium3.x 用法
try:
driver = webdriver.Chrome()
except:
# 异常时,再去下载driver
driver_path = ChromeDriverManager().install() # 下载latest release版本的chromedriver,并返回其在本机的下载存储路径
print(driver_path)
src = driver_path
# 我的谷歌浏览器安装位置下的旧谷歌驱动
dest1 = r'C:\Program Files\Google\Chrome\Application\chromedriver.exe'
shutil.copyfile(src, dest1)
# 我的anaconda3安装位置下的旧谷歌驱动所在位置
dest2 = r'D:\ProgramFiles\Anaconda3\chromedriver.exe'
shutil.copyfile(src, dest2)
# 因为上面已经将对应的谷歌驱动放到需要的位置了,所以现在不会报错了
driver = webdriver.Chrome()
# 尝试进行访问
url = 'https://www.baidu.com/'
driver.get(url)
sleep(1)
driver.close()
if __name__ == '__main__':
update_driver()