セレンのテスト用にEclipse/Javaでプロジェクトを作成しようとしています。
これは、セレン グリッドのハブでもある Windows マシンで実行しています。
Mac であるリモート マシンでテストを実行したいと考えています。
私のプロジェクトでは、次のように webdriver を設定すると:
System.setProperty("webdriver.chromeDriver.driver",
"C:\\SeleniumGrid\\chromeDriver\\chromedriver.exe"
そのパスは、リモート/Mac の chromedriver を指しているはずですよね?
MacにはすでにChromeがインストールされていました。ここで、そのマシンで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