使用Firefox headless、Selenium和Python时出错

使用Firefox headless、Selenium和Python时出错,python,selenium,firefox,headless-browser,Python,Selenium,Firefox,Headless Browser,我正在尝试使用firefox headless、Selenium框架和Python在AmazonEC2UbuntuLinux上获取网页。我的代码如下所示: from selenium import webdriver from selenium.webdriver.firefox.options import Options options = Options() options.headless = True driver = webdriver.Firefox(options=optio

我正在尝试使用firefox headless、Selenium框架和Python在AmazonEC2UbuntuLinux上获取网页。我的代码如下所示:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True

driver = webdriver.Firefox(options=options,executable_path='/home/ubuntu/geckodriver')
driver.get("https://google.com")
print('Done')
driver.quit()
现在,当我运行此命令时,会出现以下错误:

Traceback (most recent call last):
  File "test1.py", line 7, in <module>
    driver = webdriver.Firefox(options=options,executable_path='/home/ubuntu/geckodriver')
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 170, in __init__
    RemoteWebDriver.__init__(
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: Connection refused (os error 111)
回溯(最近一次呼叫最后一次):
文件“test1.py”,第7行,在
driver=webdriver.Firefox(options=options,executable_path='/home/ubuntu/geckodriver')
文件“/home/ubuntu/.local/lib/python3.8/site packages/selenium/webdriver/firefox/webdriver.py”,第170行,在__
RemoteWebDriver.\uuu init__(
文件“/home/ubuntu/.local/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,第157行,在__
启动会话(功能、浏览器配置文件)
文件“/home/ubuntu/.local/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,第252行,在启动会话中
响应=self.execute(Command.NEW_会话,参数)
文件“/home/ubuntu/.local/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,第321行,在execute中
self.error\u handler.check\u响应(响应)
文件“/home/ubuntu/.local/lib/python3.8/site packages/selenium/webdriver/remote/errorhandler.py”,第242行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.TimeoutException:消息:连接被拒绝(操作系统错误111)
我已经确保我的geckodriver和firefox版本是兼容的,我已经尝试重新启动我的EC2实例,但没有任何效果


非常感谢您的帮助。

请[与webdriver manager一起]尝试此功能

pip install webdriver-manager 
from webdriver_manager.firefox import GeckoDriverManager
self.browser = webdriver.Firefox(executable_path=GeckoDriverManager().install())
它将自动修复您可能遇到的任何驱动程序错误

from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument('--headless')
driver = webdriver.Firefox(executable_path='path to the driver', options=options)

您需要传递完整的url,包括
www
。因此,不要:

driver.get("https://google.com")
你需要:

driver.get("https://www.google.com/")

这是完整的工作代码,我用Pycharm社区版IDE在Windows机器上测试了它

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from webdriver_manager.firefox import GeckoDriverManager
options = Options()
options.headless = True
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install(),firefox_options=options)
driver.get("https://google.com")
print('Done')
driver.quit()

更新:这似乎是操作系统的问题。当我使用AmazonLinux创建一个新的EC2实例时,相同的代码工作正常。旧的EC2实例(Ubuntu)仍然给我相同的错误。

感谢回复,但这并没有解决问题。与原始问题相同。感谢回复,但这并没有解决问题。感谢回复,但这并没有解决问题。