Je ne parviens pas à lancer le navigateur Firefox pour les scripts suivants.

Script n ° 1:

System.setProperty("webdriver.gecko.driver", "D:\\selenium\\Geckodriver\\geckodriver.exe");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
WebDriver driver = new FirefoxDriver(capabilities);  
driver.close();

Script n ° 2:

System.setProperty("webdriver.gecko.driver", "D:\\selenium\\Geckodriver\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com");

Ma version de Firefox: 45.0.1
Version du pot de sélénium: selenium-server-standalone-3.4.0
Version du pilote Gecko: geckodriver-v0.20.1-win32

Je reçois le message d'erreur mentionné ci-dessous:

Exception in thread "main" org.openqa.selenium.WebDriverException: connection refused
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'SYNCGDC4098', ip: '172.26.59.52', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_151'
Driver info: driver.version: FirefoxDriver
remote stacktrace: 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$22(ProtocolHandshake.java:365)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:368)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:159)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:191)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:108)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:104)
    at seleniumtips.BasicScript.openApp(BasicScript.java:10)
    at seleniumtips.BasicScript.main(BasicScript.java:18)

Qu'ai-je fait de mal?

0
Karunagara 23 mai 2018 à 17:31

3 réponses

Meilleure réponse

Comme vous pouvez le voir sur les versions de geckodriver, la dernière version actuelle du geckodriver est la v0.20.1 . Vous devez utiliser celui-ci avec la dernière version actuelle du navigateur Firefox.

De plus, vous utilisez une ancienne version de sélénium (à partir de ici, la dernière en date est la 3.12.0).

Vous devez mettre à jour votre navigateur Firefox et le serveur autonome de sélénium.

Si vous voulez (êtes forcé) d'utiliser le plus ancien (45.0.1), vous devez utiliser le geckodriver associé.

0
Davide Patti 23 mai 2018 à 14:46

Vous pouvez mettre à jour respectivement le Selenium et le geckodriver comme indiqué par @Davide Patti. Cependant, dans votre script1 , cette ligne: WebDriver driver = new FirefoxDriver(capabilities); ne sera pas prise en charge par Selenium 3.12.0 car elle est obsolète.

Code que vous pouvez essayer:

FirefoxOptions foptions =  new FirefoxOptions();  
foptions.setCapability("marionette", true);  
WebDriver driver = new FirefoxDriver(foptions);
0
cruisepandey 23 mai 2018 à 15:22

Ce message d'erreur ...

Exception in thread "main" org.openqa.selenium.WebDriverException: connection refused
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'

... implique que WebDriverException a été déclenché car le pilote n'a pas pu démarrer son serveur interne pour communiquer avec le client Java .

Pour simplifier les choses, comme vous utilisez Selenium Java Client v3.4.0 et Firefox v45.0.1 , vous devez utiliser le binaire GeckoDriver compatible.

Geckodriver 0.16 est fortement recommandé

  • Il faut donc passer la GeckoDriver version binaire à 0.16.0 .

  • Maintenant, comme vous utiliseriez Selenium Java Client v3.4.0 , GeckoDriver v0.16.0 avec Firefox v45.0.1 , vous devez utiliser le {{ X0}} pour passer la Key webdriver.gecko.driver avec la Value comme chemin absolu du binaire GeckoDriver et enfin via un instance de DesiredCapabilities a défini la capacité marionatte sur false , puis utilisez merge() méthode de < a href = "http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/MutableCapabilities.html" rel = "nofollow noreferrer"> MutableCapabilities classe pour moi rge la capacité dans une instance de < strong> FirefoxOptions pour lancer le navigateur Firefox comme suit:

    System.setProperty("webdriver.gecko.driver", "C:/path/to/geckodriver.exe");
    DesiredCapabilities dc = new DesiredCapabilities();
    dc.setCapability("marionatte", false);
    FirefoxOptions opt = new FirefoxOptions();
    opt.merge(dc);
    FirefoxDriver driver =  new FirefoxDriver(opt);
    driver.get("https://stackoverflow.com");
    System.out.println("Application opened");
    System.out.println("Page Title is : "+driver.getTitle());
    driver.quit();
    

Vous pouvez trouver une discussion similaire dans:

0
DebanjanB 23 mai 2018 à 19:17