如何为Python Arsenic指定Firefox浏览器二进制文件路径?
解决Arsenic中指定Firefox二进制路径的问题
核心问题分析
你之前的两处错误源于混淆了Geckodriver服务和Firefox浏览器的配置对象,以及错误的capabilities嵌套结构:
service.binary是用来指定Geckodriver可执行文件的路径,而非Firefox浏览器的二进制文件- 直接设置
browser.capabilities["moz:firefoxOptions.binary"]不符合WebDriver的capabilities结构,moz:firefoxOptions本身是一个字典,需要将binary作为其子键
正确配置代码
from arsenic import get_session from arsenic.browsers import Firefox from arsenic.services import Geckodriver import asyncio async def main(): # 1. 配置Geckodriver服务:指定geckodriver.exe的路径 service = Geckodriver(binary=r"C:\path\to\geckodriver.exe") # 2. 配置Firefox浏览器:通过嵌套的moz:firefoxOptions指定二进制路径 browser = Firefox( capabilities={ "moz:firefoxOptions": { "binary": r"C:\path\to\firefox.exe" } } ) # 3. 启动会话并执行操作 async with get_session(service, browser) as session: await session.get("https://example.com") # 这里添加你的业务逻辑 asyncio.run(main())
额外说明
- 建议使用原始字符串(
r"")来避免路径中的转义字符问题 - 如果你的Geckodriver已经在系统PATH中,可以省略
service.binary的设置,直接用service = Geckodriver() - 若仍遇到问题,检查Firefox和Geckodriver的版本兼容性,确保两者版本匹配
内容的提问来源于stack exchange,提问作者ShadowMagic896
相关产品推荐
相关产品推荐

