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

 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.我该如何解决。

最佳答案

您需要在这里注意以下几点:


参数executable_path用于传递geckodriver二进制文件的绝对路径。
如果Firefox安装在默认位置,则根本不需要传递firefox二进制文件的绝对路径。
如果您使用的是Selenium 3.x,GeckoDriver和Firefox,则默认情况下功能木偶被设置为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

关于python - WebDriverException:消息:服务C:\Program Files\Mozilla Firefox\firefox.exe通过Selenium使用DesiredCapabilities意外退出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55699330/

10-17 00:38