2013-03-15 84 views
2

在2天前,a被用於這種場景,它的工作原理但知道她所有的時間我都不知道爲什麼,我使用Selenium webdriver和junit4 所以這次我的方案,以及如何我運行鉻驅動程序CMD和錯誤我如何使用junit4和selenium webdriver運行我的場景chrome

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); 
    } 
    } 
} 

和我是運行Chrome的驅動程序

> 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 

,但我有這個錯誤

> 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) 

回答

2

首先啓動硒服務器用以下命令

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

然後用下面的邏輯來創建鉻驅動程序實例

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); 

而且使用司機例如

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

它的工作原理:D謝謝你 – aminos 2013-03-18 08:14:58

+0

今天我重新運行我的方案,但她沒有工作:/ 和我有同樣的錯誤 我使用selenium-server-standalone -2.30.0.jar – aminos 2013-03-28 07:59:19

+0

只是驗證chromedriver.exe路徑。 – Santoshsarma 2013-03-28 12:04:23

1

嘗試之前增加了代碼你初始化Chromedriver:

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

編輯 關於你的意見。試試這個:

  • 按Ctrl + Alt + Del鍵
  • 選擇任務管理器
  • 切換到進程
  • 按名稱排序
  • 殺死所有 「chromedriver」 處理
  • 可選:重新啓動電腦
  • 再試一次

順便說一句,你有Chrome安裝?

EDIT2 現在我意識到,您使用的是RemoteWebDriver!所以,你必須開始樞紐和節點是這樣的:

一號樞紐:

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

第二個節點:

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 

然後運行測試

+0

我添加此代碼和我有同樣的事情 – aminos 2013-03-15 10:17:21

+0

愚蠢的問題,然後運行你的測試用例 - 是在真正存儲chromedriver.exe的路徑? – 2013-03-15 11:01:32

+0

是C:\用戶\聯想\桌面\ Projet \ chromedriver_win_26.0.1383.0 \ chromedriver.exe是第二個路徑chromedriver – aminos 2013-03-15 12:05:03

相關問題