【问题标题】:WebDriverException: Message: Service C:\Program Files\Mozilla Firefox\firefox.exe unexpectedly exited using DesiredCapabilities through SeleniumWebDriverException:消息:Service C:\Program Files\Mozilla Firefox\firefox.exe 通过 Selenium 使用 DesiredCapabilities 意外退出
【发布时间】:2019-09-06 00:49:51
【问题描述】:

我需要在我的 Windows 计算机上使用最新版本的 firefox。因此不想使用默认的 gecko 驱动程序。这是我的距离。

 import time
 from selenium import webdriver
 from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

 binary = webdriver.Firefox(executable_path= r'C:\Program Files\Mozilla Firefox\firefox.exe')
 caps = DesiredCapabilities.FIREFOX.copy()

 caps['marionette'] = True

 driver = webdriver.Firefox(firefox_binary=binary,capabilities=caps, executable_path=(os.path.abspath("geckodriver.exe")))

 time.sleep(5)
 driver.get("http://www.google.com")

最新的浏览器使用默认页面启动,但是 driver.get() 在退出时无法使用 WebDriverException:消息:服务 C:\Program Files\Mozilla Firefox\firefox.exe 意外退出。状态码是:1. 我该如何解决。

【问题讨论】:

  • 您的 Firefox 似乎崩溃了。正常(非自动)导航是否有效?
  • 是的。我同时使用它。你推荐我刷新?
  • 虽然我不是 firefox 专家,但您可以尝试运行您的脚本,而无需同时运行它。看来这确实会导致每个question 的问题
  • 按照您的建议,它会启动默认页面,但既不会导航也不会出现任何错误。
  • 这可能是防火墙问题,您是否启用了任何防火墙?如果是这样,请尝试禁用它们并重试脚本。

标签: python selenium firefox geckodriver desiredcapabilities


【解决方案1】:

您需要在这里处理几件事:

  • executable_path 参数用于传递 geckodriver 二进制文件的绝对路径
  • 如果 Firefox 安装在 默认位置,您不必传递 firefox 的绝对路径 strong> 完全二进制。
  • 如果您使用的是 Selenium 3.xGeckoDriverFirefox,则功能 ma​​rionette 设置为true 默认情况下,您不必明确提及。
  • 引入time.sleep() 会降低测试执行性能请改用WebDriverWait
  • 您的有效代码块将是:

    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    binary = r'C:\Program Files\Mozilla Firefox\firefox.exe'
    options = Options()
    options.binary = binary
    cap = DesiredCapabilities().FIREFOX.copy()
    cap["marionette"] = True #optional
    driver = webdriver.Firefox(firefox_options=options, capabilities=cap, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe")
    driver.get("http://google.com/")
    print ("Firefox Initialized")
    driver.quit()
    
  • 控制台输出:

    Firefox Initialized
    

【讨论】:

  • 谢谢,使用我不在之后的 gecko 驱动程序启动
  • @tagnihuguespascal 你在追求什么?
  • 我想启动 Mozilla Firefox 浏览器而不是 gecko 浏览器。
  • 如果您使用 Selenium 3.xmarionette 启用 Modern Firefox 浏览器,您必须强制使用 壁虎司机。在您的代码试验中,您已经完美地使用了它,就像在 executable_path=(os.path.abspath("geckodriver.exe") 中一样。您还在寻找其他东西吗?
  • 我想启动安装在我电脑上的 firefox 浏览器,而不是使用 gecko。这就是我想要实现的目标。
猜你喜欢
  • 2020-05-21
  • 2020-04-29
  • 1970-01-01
  • 2012-02-10
  • 2017-12-09
  • 2019-06-30
  • 2018-01-12
  • 2013-03-02
  • 2019-05-01
相关资源
最近更新 更多