Reputation: 4928
I'm new to Safari and when I give :
new SafariDriver()
I get :
java.lang.IllegalStateException: The expected Safari data directory does not exist: /Users/root/Library/Safari
at com.google.common.base.Preconditions.checkState(Preconditions.java:177)
at org.openqa.selenium.safari.SafariExtensions.getInstallDirectory(SafariExtensions.java:179)
at org.openqa.selenium.safari.SafariExtensions.install(SafariExtensions.java:213)
at org.openqa.selenium.safari.SafariDriverCommandExecutor.start(SafariDriverCommandExecutor.java:95)
at org.openqa.selenium.safari.SafariDriver.startClient(SafariDriver.java:73)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:112)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:127)
at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:59)
at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:52)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
at com.apple.ist.ets.monsoon.test.ProfilePage.workAround(ProfilePage.groovy:79)
at com.apple.ist.ets.monsoon.test.ProfilePage.initWebContext(ProfilePage.groovy:88)
at com.apple.ist.ets.test.BaseWebTest.setUp(BaseWebTest.java:67)
at com.apple.ist.ets.test.BaseJUnitTestCase.preMethod(BaseJUnitTestCase.java:936)
at com.apple.ist.ets.test.TestCase.preProcess(TestCase.java:495)
at com.apple.ist.ets.test.ExecutionComponent.run(ExecutionComponent.java:1481)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
I tried even the following:
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("safari.dataDir","/Users/me/Library/Safari")
driver = new SafariDriver(cap);
But facing the same issue. Where I'm making mistake?
Thanks.
Upvotes: 4
Views: 959
Reputation: 86
When launching the hub and node, don't use 'sudo' as this would search for Safari at the root level, but you might have installed Safari under your login user name.
If you are admin on your Mac, try simply 'java -jar selenium-standalone.x.x.x.jar -role hub' from the account where you logged in to install latest OSX update/safari
Upvotes: 0
Reputation: 3764
This appears to be a known issue.
https://code.google.com/p/selenium/issues/detail?id=5293
Does the folder you are searching for even exist?
Upvotes: 3