我的解决方案
from instapy import InstaPy
session = InstaPy(username="username", password="password", browser_executable_path=r"C:\Program Files\Mozilla Firefox\firefox.exe")
session.login()
在 Session 实例中传递browser_executable_path = r"C:[Custom Location]" 。
重新安装 Firefox 对我不起作用。
解释
selenium.common.exceptions.SessionNotCreatedException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line
该消息意味着 GeckoDriver在尝试启动/生成新的浏览上下文(即 Firefox 浏览器会话)时无法找到 Firefox 二进制文件(firefox.exe) 。
为什么?
可能出于以下两个原因之一:
- Firefox 未安装在您的系统中。
- Firefox 未安装在系统的默认位置。
通常,任何 Selenium 项目都需要...
options = webdriver.firefox.options.Options()
options.binary_location = r"C:\Program Files\Mozilla Firefox\firefox.exe"
browser = webdriver.Firefox(options=options)
...对于通过 Options() 实例传递 Firefox 二进制文件的绝对路径的自定义位置,但由于 InstaPy 处理初始化浏览器,因此您必须通过类属性“browser_executable_path”传递它。
TL;DR:添加 InstaPy 类的参数 browser_executable_path 允许我将 r"C:[Custom Firefox Location]" 作为 Firefox 位置传递。
参考