selenium4如何指定chrome和firefox的驱动(driver)路径

python+pytest+selenium框架的自动化测试脚本。

原本用的chrome,很久没用了,今天执行,发现chrome偷偷升级,我的chromedriver版本不对了。。。鉴于访问chrome相关网站太艰难,决定弃用chrome,改用firefox。因为,firefox可以自己决定是否升级浏览器:

改倒是很快,问题是,改完了执行的时候发现,有时候可以,有时候找不到driver。。。。因为我是这么用的:

python 复制代码
driver = webdriver.Firefox()

这里未指定geckodriver的路径,默认使用执行目录下的driver。

浏览器驱动放在项目的根目录下,执行时,若从项目根目录下的pytest.main()执行,自然没有问题。但是当我写脚本,单独调试的时候,执行目录变成每一个test case所在的目录,即%项目根目录%/case/子目录/test_XXX.py

所以,它找不到浏览器驱动。。。

我需要指定浏览器驱动的位置,让它每次都去同一个地方找。网上搜了一圈,要么是chromedriver的指定方法,要么是让我用参数execute_path指定路径,但是,运行时发现这个参数非法。。。

自己去查官网API(7. WebDriver API --- Selenium Python Bindings 2 documentation),一打开看到这样一个列表

受到启发,于是仿着chrome,指定了firefox驱动的路径,如下:

指定chrome driver的路径

python 复制代码
import sys
import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

driver_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(sys.executable)))),'chromedriver.exe')
service = Service(executable_path=driver_path)
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

指定firefox driver的路径

python 复制代码
import sys
import os
from selenium import webdriver
from selenium.webdriver.firefox.options import Options


driver_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(sys.executable)))),
                               'geckodriver.exe')
service = Service(executable_path=driver_path)
options = webdriver.FirefoxOptions()
driver = webdriver.Firefox(service=service, options=options)
相关推荐
用户4019925568611 分钟前
多源异构 B2B 公开需求信号去重与企业实体证据链存储设计(64-bit SimHash 分桶 + Jaccard)
python
aifannihao34 分钟前
GitHub Actions 锁文件实测:6 个 uses 只锁住 2 个
python·ci/cd·标准库·供应链安全·github actions
2601_967980111 小时前
使用gensim处理文本(1)语料库与词向量空间
python·自然语言处理·gensim·词向量·文本分析
3095566662 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
2601_967980112 小时前
世界上最好的Python编辑器是什么?我投PyCharm一票
ide·python·pycharm·数据科学·jupyter notebook
wuyk5553 小时前
Spider-第09讲-三格式落盘CSV-Excel-JSON
爬虫·python·json·excel
青少儿编程课堂3 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
特立独行的猫A9 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
大可不必了14 小时前
03 函数定义和调用
开发语言·python
承渊政道15 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame