wake-up-neo.net

Selen "Es wurde kein passender Satz von Funktionen gefunden", obwohl sich der Treiber in/usr/local/bin befindet

Ich versuche, einem Tutorial über Selenium zu folgen, http://Selenium-python.readthedocs.io/getting-started.html . Ich habe die neueste Version von geckodriver heruntergeladen und in /usr/local/bin kopiert. Jedoch wenn ich es versuche

from Selenium import webdriver
driver = webdriver.Firefox()

Ich erhalte folgende Fehlermeldung:

Traceback (most recent call last):
  File "/Users/kurtpeek/Documents/Scratch/Selenium_getting_started.py", line 4, in <module>
    driver = webdriver.Firefox()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Selenium/webdriver/firefox/webdriver.py", line 152, in __init__
    keep_alive=True)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 98, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 188, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 252, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.WebDriverException: Message: Unable to find a matching set of capabilities

[Finished in 1.2s with exit code 1]

Unter https://github.com/SeleniumHQ/Selenium/issues/3884 scheinen andere Benutzer ähnliche Probleme zu haben, das Selenium-Team kann es jedoch nicht reproduzieren. Wie kann ich Selenium mit Firefox zusammenarbeiten lassen? (Es funktioniert mit chromedriver und einer webdriver.Chrome()-Instanz, daher vermute ich, dass dies ein Fehler in Selenium ist).

24
Kurt Peek

Die Aktualisierung von Firefox und Selenium hat es für mich gelöst. Ich habe jedoch keine Erklärung für die Ursache.

  • Aktualisierte Firefox 48 → 53
  • Aktualisierung auf Selen 3.4.1

Ich habe auch Geckodriver mit Homebrew neu installiert/aktualisiert und explizit als ausführbare Datei für Selenium WebDriver verwendet. Es stellte sich jedoch heraus, dass es nicht notwendig war, die Option "Übereinstimmende Menge von Funktionen kann nicht gefunden" error zu verringern.

19
Winterflags

Stellen Sie als Nebenbemerkung sicher, dass Sie die richtige Version 32/64bit für Ihren Geckos Treiber haben.

11
apmacniven

für mich war es genug, FF einfach zu verbessern

5
elad silver

Ich teile hier nur meinen Erfolgsfall

Hinweis: Beachten Sie, dass die Architektur hier von Bedeutung ist, Windows 64/32 oder Linux 64/32. Stellen Sie sicher, dass Sie den richtigen 64/32 Bit Selenium Webdriver, 64/32 Geckodriver, herunterladen.

Meine Konfiguration war wie folgt:

Linux: Centos 7 64bit, Window 7 64bit

Firefox: 52.0.3

Selenium Webdriver: 3.4.0 (Windows), 3.8.1 (Linux Centos)

GeckoDriver: v0.16.0 (Windows), v0.17.0 (Linux Centos)

Arbeitscode (ohne Proxy-Einstellungen)

System.setProperty("webdriver.gecko.driver", "/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver");

ProfilesIni ini = new ProfilesIni();


// Change the profile name to your own. The profile name can 
// be found under .mozilla folder ~/.mozilla/firefox/profile. 
// See you profile.ini for the default profile name

FirefoxProfile profile = ini.getProfile("default"); 

DesiredCapabilities cap = new DesiredCapabilities();
cap.setAcceptInsecureCerts(true);

FirefoxBinary firefoxBinary = new FirefoxBinary();

GeckoDriverService service =new GeckoDriverService.Builder(firefoxBinary)
        .usingDriverExecutable(new File("/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver"))
        .usingAnyFreePort()
        .build();
try {
    service.start();
} catch (IOException e) {
    e.printStackTrace();
}

FirefoxOptions options = new FirefoxOptions().setBinary(firefoxBinary).setProfile(profile).addCapabilities(cap);

driver = new FirefoxDriver(options);
driver.get("https://www.google.com");

System.out.println("Life Title -> " + driver.getTitle());
driver.close();

Arbeitscode (mit Proxy-Einstellungen)

    System.setProperty("webdriver.gecko.driver", "/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver");

    String PROXY = "my-proxy.co.jp";
    int PORT = 8301;


    ProfilesIni ini = new ProfilesIni();


    // Change the profile name to your own. The profile name can 
    // be found under .mozilla folder ~/.mozilla/firefox/profile. 
    // See you profile.ini for the default profile name

    FirefoxProfile profile = ini.getProfile("default"); 


    com.google.gson.JsonObject json = new com.google.gson.JsonObject();
    json.addProperty("proxyType", "manual");
    json.addProperty("httpProxy", PROXY);
    json.addProperty("httpProxyPort", PORT);
    json.addProperty("sslProxy", PROXY);
    json.addProperty("sslProxyPort", PORT);

    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setAcceptInsecureCerts(true);
    cap.setCapability("proxy", json);


    FirefoxBinary firefoxBinary = new FirefoxBinary();

    GeckoDriverService service =new GeckoDriverService.Builder(firefoxBinary)
            .usingDriverExecutable(new File("/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver"))
            .usingAnyFreePort()
            .usingAnyFreePort()
            .build();
    try {
        service.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

    FirefoxOptions options = new FirefoxOptions().setBinary(firefoxBinary).setProfile(profile).addCapabilities(cap);

    driver = new FirefoxDriver(options);
    driver.get("https://www.google.com");

    System.out.println("Life Title -> " + driver.getTitle());
    driver.close();
1
HA S

In meinem Fall habe ich nur Firefox Developer Edition, aber immer noch den gleichen Fehler.

Nach der Installation einer Firefox-Standardversion wird dieses Problem behoben.

1
Hongbo Miao

Mac-Benutzer hier.

Ich habe dieses Problem behoben, indem sichergestellt wurde, dass Firefox "Firefox" heißt und sich im Ordner "Applications" befindet. Ich hatte es vorher "Firefox 58" genannt (ich habe mehrere Versionen).

0
Jeremy S.

Ich hatte das gleiche Problem. Mein Geckodriver war 32-Bit und Firefox war 64. Wurde behoben, indem der Geckodriver auf 64-Bit aktualisiert wurde.

0
Joe12

Dieselbe Fehlermeldung bei einem Droplet bei DigitalOcean - FireFox wurde nicht installiert. Stack-Spur von Fehlern wurde wie unten gezeigt - 

exception_class 
<class 'Selenium.common.exceptions.SessionNotCreatedException'>
json    
<module 'json' from '/usr/lib/python3.5/json/__init__.py'>
message 
'Unable to find a matching set of capabilities'
response    
{'status': 500,
 'value': '{"value":{"error":"session not created","message":"Unable to find a '
          'matching set of capabilities","stacktrace":""}}'}
screen  
None
self    
<Selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f428e3f10f0>
stacktrace  
None
status  
'session not created'
value   
{'error': 'session not created',
 'message': 'Unable to find a matching set of capabilities',
 'stacktrace': ''}
value_json  
('{"value":{"error":"session not created","message":"Unable to find a matching '
 'set of capabilities","stacktrace":""}}')
0
Rohit Dhankar