2013-03-12 3 views
0

셀레늄 테스트를 위해 eclipse/java에서 프로젝트를 만들려고합니다.Mac에서 원격 테스트를 위해 Java에서 Selenium ChromeDriver 설정

저는 셀렌 그리드의 허브이기도 한 Windows 컴퓨터에서이 작업을 수행하고 있습니다.

Mac 인 원격 컴퓨터에서 테스트를 실행하고 싶습니다. 내 프로젝트에서

,이 같은 webdriver 설정하는 경우 :

System.setProperty("webdriver.chromeDriver.driver", 
        "C:\\SeleniumGrid\\chromeDriver\\chromedriver.exe" 

그 경로를 잘 내 원격/맥에 chromedriver를 가리키는되어야한다?

mac에는 크롬이 이미 설치되어 있습니다. 나는 여기에 해당 시스템의 chromedriver 발견 /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome

을하지만, 내가 이런 식으로 설정하는 경우 :

System.setProperty("webdriver.chromeDriver.driver", 
      "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome"); 
    ChromeOptions options = new ChromeOptions(); 
    cap.setCapability(ChromeOptions.CAPABILITY, options); 
    cap = DesiredCapabilities.chrome(); 
    cap.setBrowserName("chrome"); 
    cap.setPlatform(Platform.MAC); 
    cap.setJavascriptEnabled(true); 
    newDriver = new RemoteWebDriver(new URL(
      "http://999.999.9.99:9999/wd/hub"), cap); 

을 나는이 줄에 널 포인터 예외를 얻을 :

cap.setCapability(ChromeOptions.CAPABILITY, options); 

확실하지 내가 여기서 잘못하고있어. 죄송 해요, 셀레늄을 처음 접했어. 어떤 아이디어라도 높이 평가할 것입니다.

편집 : 여기 허브 나 코드가 상주하는 시스템에서 실행되는 스택 트레이스

[TestNG] Running: 

[ThreadUtil] Starting executor timeOut:2147483647ms workers:1 threadPoolSize:3 
FAILED CONFIGURATION: @BeforeClass setUp("chrome") 
java.lang.NullPointerException 
    at selenium.helper.WebUtils.setUpRemoteDriver(WebUtils.java:74) 
    at selenium.testNG.TestNikeCareerSearch.setUp(TestNikeCareerSearch.java:23) 
    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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) 
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) 
    at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:175) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:107) 
    at org.testng.TestRunner.privateRun(TestRunner.java:767) 
    at org.testng.TestRunner.run(TestRunner.java:617) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) 
    at org.testng.SuiteRunner.access$0(SuiteRunner.java:333) 
    at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368) 
    at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

SKIPPED CONFIGURATION: @AfterClass tearDown 
+0

stacktrace를 추가 할 수 있습니까? 게다가 \\ in 경로는 왜? '/'만 사용하십시오 – Smit

+0

@이 페이지 (https://code.google.com/p/selenium/wiki/ChromeDriver )가 그 위치에서 크롬 " "이클립스에서는 추가"\ "를 추가 할 때까지"유효하지 않은 이스케이프 시퀀스 "오류가 발생했습니다 – user1988594

+0

원격으로 실행하려하지 않았지만 크롬 드라이버를 정의 된 폴더에 넣으려고했습니다. 경로? webdriver.chromeDriver.driver를 설정하지 않고 –

답변

0

System.setProperty("webdriver.chromeDriver.driver", 
"C:\\SeleniumGrid\\chromeDriver\\chromedriver.exe") 

입니다. 따라서이 속성은 원격 컴퓨터가 아닌 해당 컴퓨터에서 설정됩니다.

mac 컴퓨터에서 webdriver 노드를 시작하는 동안 -Dwebdriver.chrome.driver="pathtochromedriverinnode" 문을 추가 할 수 있습니다. 이 같은 것을 :

java -jar seleniumserver.jar -role wd -hub http://hubip:port/grid/register -Dwebdriver.chrome.driver="pathtochromedriverinnode" 
관련 문제