2013-03-15 1 views
2

En 2 jours il y avait un scénario a été utilisé et cela fonctionne mais sais tout le temps qu'elle n'a pas je ne sais pas pourquoi, j'utilise Selenium webdriver et junit4 donc ce mon scénario et comment je pilote la gestion de chrome avec cmd et l'erreurComment puis-je exécuter mon scénario avec chrome en utilisant junit4 et selenium webdriver

package com.example.test; 
import java.util.concurrent.TimeUnit; 
import org.junit.*; 
import static org.junit.Assert.*; 
import org.openqa.selenium.*; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 
public class SearchWithCH { 
    private WebDriver driver; 
    private String baseUrl; 
    private StringBuffer verificationErrors = new StringBuffer(); 
    @Before 
    public void setUp() throws Exception { 
    driver = new RemoteWebDriver(DesiredCapabilities.chrome()); 
    baseUrl = "http://localhost:8080/"; 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    } 
    @Test 
    public void testUntitled() throws Exception { 
    driver.get(baseUrl + "/myapp/pages/accueil/login.xhtml#loaded"); 
    driver.findElement(By.id("login")).clear(); 
    driver.findElement(By.id("login")).sendKeys("login"); 
    driver.findElement(By.id("password")).clear(); 
    driver.findElement(By.id("password")).sendKeys("password"); 
    driver.findElement(By.id("loginButton")).click(); 
    driver.findElement(By.xpath("//*[@id='mainMenu']/ul/li[2]/a")).click(); 
    driver.findElement(By.xpath("//*[@id='menu_contact_search']")).click(); 
    driver.findElement(By.id("formRecherche:nom")).clear(); 
    driver.findElement(By.id("formRecherche:nom")).sendKeys("Jean"); 
    driver.findElement(By.id("formRecherche:button_recherche")).click(); 
    try { 
     assertTrue(driver.findElement(By.xpath("//*[@id='panel_contact_id_header']/span")).getText().matches("^[\\s\\S]*Contact : 9673 [\\s\\S]*$")); 
    } catch (Error e) { 
     verificationErrors.append(e.toString()); 
    } 
    } 
    @After 
    public void tearDown() throws Exception { 
    //driver.quit(); 
    String verificationErrorString = verificationErrors.toString(); 
    if (!"".equals(verificationErrorString)) { 
     fail(verificationErrorString); 
    } 
    } 
} 

et je suis rodé pilote de chrome avec

> java -jar selenium-server-standalone-2.30.0.jar -Dwebdriver.chrome.driver=C:\Users\lenovo\Desktop\Projet\chromedriver_win_26.0.1383.0\chromedriver.exe 

mais je cette erreur

> org.openqa.selenium.WebDriverException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list 
Command duration or timeout: 130 milliseconds 
Build info: version: '2.30.0', revision: 'dc1ef9c', time: '2013-02-19 00:15:57' 
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_13' 
Driver info: org.openqa.selenium.remote.RemoteWebDriver 
    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.ErrorHandler.createThrowable(ErrorHandler.java:187) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554) 
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216) 
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111) 
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:129) 
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:119) 
    at com.QD2.Search.SearchWithCH.setUp(SearchWithCH.java:17) 
    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) 
Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list 
    at com.google.common.base.Preconditions.checkState(Preconditions.java:176) 
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:105) 
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:75) 
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:129) 
    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.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.java:57) 
    at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:51) 
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:213) 
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:167) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Répondre

2

Tout d'abord démarrer le serveur de sélénium avec commande ci-dessous

java -Dwebdriver.chrome.driver=latest\chromedriver.exe -jar selenium-server-standalone-2.31.0.jar 

Et puis utilisez ci-dessous logique pour créer une instance de pilote chrome

System.setProperty("webdriver.chrome.driver", "D:\\selenium\\latest\\chromedriver.exe"); 
DesiredCapabilities dc=new DesiredCapabilities(); 
dc.setBrowserName("chrome"); 
driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),dc); 

et exécutez votre cas de test à l'aide pilote exemple

driver.get("http://www.google.com"); 
+0

Cela fonctionne: D vous remercie – aminos

+0

aujourd'hui je re-exécuter mon scénario, mais elle n'a pas fonctionné:/ et j'ai la même erreur J'utilise sélenium-server-standalone -2.30.0.jar – aminos

+0

il suffit de vérifier le chemin chromedriver.exe – Santoshsarma

1

essayer d'ajouter au code avant vous initialiser le Chromedriver:

System.setProperty("webdriver.chrome.driver", "C:\\Users\\lenovo\\Desktop\\Projet\\chromedriver_win_26.0.1383.0\\chromedriver.exe"); 

EDIT En ce qui concerne vos commentaires. Essayez ceci:

  • Appuyez sur Ctrl + Alt + Suppr
  • Choisissez Gestionnaire des tâches
  • Passer au processus
  • Trier par nom
  • Tuez tous "chromedriver" traite
  • En option: Restart ordinateur
  • Réessayez

BTW, avez-vous installé Google Chrome?

EDIT2 Maintenant, j'ai réalisé que vous utilisez RemoteWebDriver! Donc, vous devez commencer hub et le noeud comme celui-ci:

1er hub:

java -jar lib/selenium-server-standalone-2.31.0.jar -role hub 

2ème nœud:

java -jar selenium-server-standalone-2.31.0.jar -role node -hub http://localhost:4444/grid/register -maxSession 15 -browser browserName="chrome",version=ANY,platform=WINDOWS,maxInstances=15 -Dwebdriver.chrome.driver=C:\Users\lenovo\Desktop\Projet\chromedriver_win_26.0.1383.0\chromedriver.exe 

Et puis exécutez votre test

+0

i ajouter ce code et j'ai la même chose – aminos

+0

question stupide alors - est au chemin vraiment stocké le chromedriver.exe? –

+0

oui C: \ Users \ lenovo \ Desktop \ Projet \ chromedriver_win_26.0.1383.0 \ chromedriver.exe est le chemin à chromedriver e – aminos

Questions connexes