【发布时间】:2013-03-12 21:20:01
【问题描述】:
我正在尝试在 eclipse/java 中创建一个项目以进行硒测试。
我在 Windows 机器上执行此操作,这也是我的 selenium 网格中心。
我想在远程机器 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
【问题讨论】:
-
你能添加堆栈跟踪吗?此外,为什么 \\ 在路径中?尝试仅使用
/ -
@Smit "\\" 是因为这个页面:code.google.com/p/selenium/wiki/ChromeDriver 导致我在那个位置用单个 "\" 找到 chromedriver 但在 Eclipse 中,它给出了一个错误 "无效的转义序列"直到我添加了额外的 "\"s
-
我没有尝试远程运行它,但是您是否尝试将您的 chrome 驱动程序放在 PATH 中定义的文件夹中?无需设置 webdriver.chromeDriver.driver
-
@KirillKulakov 恐怕我不太明白你的意思。您能否分享一个示例,说明您的替代方式可能是什么样的?
-
据我记得你可以将 ChromeDriver 放在定义为 PATH 文件夹的文件夹中(谷歌它),我不确定它在 mac 上是如何工作的,但是当我把 ChromeDriver 放在我的 PATH 文件夹,我只需要在我的代码中创建 ChromeDriver 对象而无需任何配置
标签: java google-chrome webdriver testng selenium-grid