Je ne suis pas en mesure d'exécuter mon script dans aucun des navigateurs. Ci-dessous est l'erreur que je reçois pour Firefox. L'emplacement d'installation de Firefox est correct. Je ne sais pas ce qui ne va pas.
J'utilise Firefox 15. Selenium Java 2.2.0 et Eclipse Juno
Mon cas de test est donné ci-dessous:
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.Selenium.By;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.openqa.Selenium.firefox.FirefoxProfile;
public class FirstTest {
private WebDriver _driver;
@Before
public void setUp() throws Exception {
System.setProperty("webdriver.firefox.driver","C:\\Program Files\\Mozilla Firefox15\\Firefox.exe");
FirefoxProfile firefoxProfile = new FirefoxProfile();
_driver = new FirefoxDriver(firefoxProfile);
}
@Test
public void Login() throws Exception {
_driver.get("https://www.google.co.in/");
assertEquals("Google", _driver.getTitle());
_driver.findElement(By.id("lst-ib")).clear();
_driver.findElement(By.id("lst-ib")).sendKeys("Selenium");
_driver.findElement(By.name("btnG")).click();
_driver.findElement(By.linkText("Selenium - Web Browser Automation")).click();
assertEquals(" ", _driver.getTitle());
assertEquals("Selenium - Web Browser Automation", _driver.getTitle());
}
@After public void tearDown() throws Exception {
_driver.quit();
}
}
Ci-dessous est l'erreur que je reçois:
org.openqa.Selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: Vista
Build info: version: '2.20.0', revision: '16008', time: '2012-02-27 19:03:59'
System info: os.name: 'Windows 7', os.Arch: 'x86', os.version: '6.1', Java.version: '1.6.0_26'
Driver info: driver.version: FirefoxDriver
at org.openqa.Selenium.firefox.internal.Executable.<init>(Executable.Java:52)
at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:56)
at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:52)
at org.openqa.Selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.Java:88)
at FirstTest.setUp(FirstTest.Java:16)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at Java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.Java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.Java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.Java:42)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.Java:27)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.Java:30)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.Java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.Java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.Java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.Java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.Java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.Java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.Java:300)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.Java:50)
at org.Eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.Java:38)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:467)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)
Java.lang.NullPointerException
at FirstTest.tearDown(FirstTest.Java:31)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at Java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.Java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.Java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.Java:42)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.Java:36)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.Java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.Java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.Java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.Java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.Java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.Java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.Java:300)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.Java:50)
at org.Eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.Java:38)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:467)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)
PATH
C:\Program Files\Mozilla Firefox15\Firefox.exe
Ce ne sera probablement pas ici - parce que c'est ce que dit l'erreur. Comment le réparer?
Cela n'aide pas alors à changer le constructeur comme ceci:
File pathToBinary = new File("C:\\Program Files\\Mozilla Firefox15\\Firefox.exe");
FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();
FirefoxDriver _driver = new FirefoxDriver(ffBinary,firefoxProfile);
attention, si le chemin d'accès au navigateur contient de l'espace (comme exemple "...\Program Files (x86) ..."), vous devez ajouter des guillemets à la valeur de param.
Exemple:
-Dwebdriver.firefox.bin="D:\Program Files (x86)\Mozilla Firefox\firefox.exe"
Tout a été exécuté avec succès lors de l'ajout de guillemets doubles.
Pour une raison quelconque, l'ajout de la variable d'environnement n'a pas fonctionné pour moi.
J'ai été en mesure de spécifier un chemin d'accès à Firefox dans la configuration du nœud de ligne de commande, comme décrit sur cette page (grid2).
-browser “browserName=firefox,version=3.6,firefox_binary=c:\Program Files\Mozilla Firefox\firefox.exe ,maxInstances=3, platform=WINDOWS”
Je souffrais aussi du même problème. Enfin, je l'ai résolu en définissant la valeur binaire en capacités comme indiqué ci-dessous. Au moment de l'exécution, il utilise cette valeur, il est donc indispensable de le définir.
DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setCapability("platform", Platform.ANY);
capability.setCapability("binary", "/ms/dist/fsf/PROJ/firefox/16.0.0/bin/firefox"); //for linux
//capability.setCapability("binary", "C:\\Program Files\\Mozilla Firefox\\msfirefox.exe"); //for windows
WebDriver currentDriver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
Et vous avez terminé !!! Bonne codage :)
Le moyen le plus simple consiste à utiliser le code ci-dessous avant de définir votre pilote.
System.setProperty("webdriver.firefox.bin",
"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
vous devez ajouter un argument vm lors de l'exécution du programme. Cela devrait être comme
-Dwebdriver.firefox.bin=/custom/path/of/firefox/exe
Dans IntelliJ IDE beaucoup plus simple, allez dans Exécution → Modifier les configurations ... Dans les options VM, ajoutez ce qui précède.
Eclipse dispose également des options permettant de donner un argument à vm lors de l'exécution. De cette façon, j'utilise Firefox portable avec Selenium.
Ce code a tout simplement fonctionné pour moi
System.setProperty("webdriver.firefox.bin", "C:\\Program Files\\Mozilla Firefox 54\\firefox.exe");
String Firefoxdriverpath = "C:\\Users\\Hp\\Downloads\\geckodriver-v0.18.0-win64\\geckodriver.exe";
System.setProperty("webdriver.gecko.driver", Firefoxdriverpath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver = new FirefoxDriver(capabilities);
J'ai eu ce problème en déplaçant mon projet d'un ordinateur à un autre ... La solution consistait à recharger Selenium Webdriver à partir de nuget.
J'ai reçu ce message d'erreur lors de l'exécution de tests dans Visual Studio: Firefox ne se charge tout simplement pas et j'ai reçu le message d'erreur OP.
J'ai ouvert manuellement Firefox et découvert qu'il devait se mettre à jour (avant le chargement). Une fois que j'ai terminé, j'ai relancé la suite de tests et Firefox s'est bien présenté, les tests ont été correctement exécutés. Si vous obtenez cette erreur tout d'un coup, essayez cette réponse avant de mettre à jour quoi que ce soit sur votre ordinateur.
J'avais aussi le même problème et j'ai passé plus d'une semaine à le réparer. Redémarrer ma machine semblait l’avoir corrigé, mais seulement temporairement.
Il existait une solution pour augmenter le nombre maximal de ports éphémères en modifiant le fichier de registre. Cela semblait avoir résolu le problème, mais cela aussi, seulement temporairement.
Pendant un certain temps, je pensais toujours que si j'essayais d'accéder à un pilote qui n'est plus disponible, j'ai donc essayé d'appeler:
driver.quit()
Et puis recréez l'instance du navigateur, qui ne m'a donné que: SessionNotFoundException .
Je me suis maintenant rendu compte que j'avais utilisé BOTH System.setProperty
ainsi que ffCapability.setCapability
pour définir le chemin du fichier binaire.
J'ai alors essayé avec seulement System.setProperty
=> Pas de chance là-bas.
Seulement ffCapability.setCapability
=> Voila !!! Jusqu'à présent, cela a bien fonctionné. J'espère que cela fonctionnera très bien si j'essaye de relancer mes scripts demain et le lendemain et le lendemain ... :)
Bottomline: Utilisez seulement ceci
ffCapability.setCapability("binary", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //for windows`
J'espère que ça aide!
Essaye ça:
System.setProperty("webdriver.gecko.driver", "geckodriver p");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver = new FirefoxDriver(capabilities);
Pour moi, il suffisait de changer la variable de chemin en: 'C:\Program Files\Mozilla Firefox' au lieu de 'C:\Program Files (x86)\Mozilla Firefox'