如何用相对路径启动Selenium Edge WebDriver?变量加r标识无效
问题:相对路径启动Selenium Edge WebDriver失败
想要通过相对路径启动Selenium Edge WebDriver,但当前代码无法正常运行。代码如下:
path_main = os.getcwd() edge_path = str('\\') + 'build\msedgedriver.exe' path_get = path_main + edge_path s = service.Service(r'path_get')
确认路径是正确的,但最后一行代码无法工作。请问是否可以用r标识读取变量作为路径链接?能否帮我优化代码使其更灵活?
问题分析
- r前缀使用错误:
r'path_get'是把字符串path_get直接当作路径,而非读取变量path_get的值。r前缀仅对字符串字面量生效,不能直接作用于变量。 - 路径拼接不规范:手动拼接字符串路径容易出现转义问题(比如
'build\msedgedriver.exe'里的\m会被转义,实际变成buildmsedgedriver.exe),同时也不具备跨平台兼容性。
优化后的代码
推荐使用Python内置的路径处理工具,既解决转义问题,又能跨平台运行:
方法1:使用os.path模块(兼容所有Python版本)
import os from selenium.webdriver.edge.service import Service # 自动处理路径分隔符,避免转义错误 driver_path = os.path.join(os.getcwd(), 'build', 'msedgedriver.exe') s = Service(driver_path)
方法2:使用pathlib(Python3.4+推荐,语法更简洁)
from pathlib import Path from selenium.webdriver.edge.service import Service # Path对象自动处理跨平台路径逻辑 driver_path = Path.cwd() / 'build' / 'msedgedriver.exe' # 部分旧版Selenium需传入字符串,新版本可直接传Path对象 s = Service(str(driver_path))
关键说明
- 无需给变量加r前缀,路径处理工具会自动转义和适配系统路径分隔符。
- 上述两种方法均支持Windows、Linux、macOS跨平台运行,比手动拼接字符串更可靠。
内容的提问来源于stack exchange,提问作者hadji
相关产品推荐
相关产品推荐

