我正在部署一个Python脚本到Heroku。Python脚本包括一个使用Firefox的Selenium脚本。下面是代码片段:
def runFirefoxSelenium():
options = FirefoxOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
binary = './bin/Firefox.app/Contents/MacOS/firefox-bin'
options.binary_location = binary
driver = webdriver.Firefox(options=options)
...
在根目录下,我创建了一个名为bin的文件夹,并将Firefox应用程序转储到bin中。
当我在本地(MacOS)运行脚本时,它工作得很好。它能够在Firefox中找到Firefox二进制文件。应用程序目录中。
但是,当我将它上传到Heroku服务器时,我得到以下错误:
selenium.common.exceptions.InvalidArgumentException: Message: binary is not a Firefox executable
我尝试了一些变化,我只把firefox二进制文件(称为"firefox-bin")放在bin文件夹中,但这甚至在本地也不起作用。
你建议我如何解决这个问题?
您可以使用SeleniumBase驱动程序管理器来解决这个问题:
from seleniumbase import Driver
driver = Driver(browser="firefox", headless=False)
(如果在无头服务器上运行,请确保使用headless=True
代替)
对于其他SeleniumBase语法格式,您可以使用pytest
命令行选项将浏览器设置为Firefox:pytest --firefox
.