Thank you for capturing and sharing this information. Den tors. 17. okt. 2024 kl. 20.14 skrev o...@ocs.cz <o...@ocs.cz>:
> Hi there, > > well, looks like the claim “all I need is geb-core JAR” is patently false > :( When instead of downloading the JAR manually and putting it to the > classpath (which approach I happen to strongly prefer) I use @Grab to get > dependences as well, it more-or-less starts working. > > There are some version clashes to be resolved through @GrabExclude, too. > Seem to be nowhere documented, sigh. Also, it looks like there's no way (or > at least, I've found none myself) to load the Safari driver implicitly; > seems it must be loaded manually, as shown below (but as always, I might be > missing something of importance here). > > Eventually, this way it seems to work, at least with simple test cases (if > anybody tries, do not forget to enable the driver using safaridriver > --enable; by my experience must be always done as root, an admin does not > suffice, and to spread confusion, instead of “no privilege” or so it > reports a bad password): > > === > @Grab('org.gebish:geb-core:7.0') > @GrabExclude('org.apache.groovy:groovy-xml') > @GrabExclude('org.apache.groovy:groovy-macro') > @Grab('org.seleniumhq.selenium:selenium-support:4.25.0') > @Grab('org.seleniumhq.selenium:selenium-safari-driver:4.25.0') > > import geb.Browser > import org.openqa.selenium.safari.* > > Browser.drive(driver:SafariDriver.newInstance(SafariOptions.newInstance())) > { > ... test case as needed ... > }.quit() > === > > All the best, > OC > > On 17. 10. 2024, at 17:59, OCsite <o...@ocs.cz> wrote: > > Hi there, > > based on the latest debate in the devlist, I'm trying to play with Geb. > The Book of Geb quite explicitly says that all I need is geb-core jar, a > WebDriver driver implementation and the selenium-support jar > <https://gebish.org/manual/current/#installation-usage>, nevertheless, it > does not seem so; it looks like the *geb-core* JAR does not contain > *GebException*: > > === > 1065 ocs */tmp>* <geb.groovy > import geb.Browser > Browser.drive { > to GebHomePage > manualsMenu.open() > manualsMenu.links[0].click() > at TheBookOfGebPage > } > 1066 ocs */tmp>* ls -l *.jar > > -rw-r--r--@ 1 ocs wheel 750068 Oct 17 17:24 geb-core-7.0.jar > -r-xr-xr-x@ 2 ocs staff 174337 Jan 1 2010 selenium-support-4.25.0.jar* > 1067 ocs */tmp>* /usr/local/groovy-4.0.21/bin/groovy -cp > geb-core-7.0.jar:selenium-support-4.25.0.jar -d geb > Caught: java.lang.NoClassDefFoundError: geb/error/GebException > ... ... ... > 1068 ocs */tmp>* unzip -l geb-core-7.0.jar|fgrep GebException > 1069 ocs */tmp>* > === > > What do I do wrong? Thanks! > OC > > === full stack in case it helps, which I seriously doubt: > 1067 ocs */tmp>* /usr/local/groovy-4.0.21/bin/groovy -cp > geb-core-7.0.jar:selenium-support-4.25.0.jar -d geb > Caught: java.lang.NoClassDefFoundError: geb/error/GebException > java.lang.NoClassDefFoundError: geb/error/GebException > at java.base/java.lang.ClassLoader.defineClass1(Native Method) > at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) > at > java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) > at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550) > at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458) > at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452) > at java.base/java.security.AccessController.doPrivileged(Native Method) > at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451) > at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:143) > at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) > at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) > at > java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137) > at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2357) > at > org.codehaus.groovy.reflection.CachedClass$2.lambda$initValue$4(CachedClass.java:68) > at java.base/java.security.AccessController.doPrivileged(Native Method) > at > org.codehaus.groovy.reflection.CachedClass.doPrivileged(CachedClass.java:160) > at > org.codehaus.groovy.reflection.CachedClass.access$000(CachedClass.java:45) > at > org.codehaus.groovy.reflection.CachedClass$2.initValue(CachedClass.java:73) > at > org.codehaus.groovy.reflection.CachedClass$2.initValue(CachedClass.java:63) > at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:50) > at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:37) > at > org.codehaus.groovy.reflection.CachedClass.getConstructors(CachedClass.java:276) > at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:232) > at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:242) > at > groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createNormalMetaClass(MetaClassRegistry.java:166) > at > groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createWithCustomLookup(MetaClassRegistry.java:156) > at > groovy.lang.MetaClassRegistry$MetaClassCreationHandle.create(MetaClassRegistry.java:139) > at > org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:271) > at > org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:314) > at > org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:269) > at > org.codehaus.groovy.vmplugin.v8.Selector$MethodSelector.getMetaClass(Selector.java:575) > at > org.codehaus.groovy.vmplugin.v8.Selector$MethodSelector.setCallSiteTarget(Selector.java:1020) > at > org.codehaus.groovy.vmplugin.v8.IndyInterface.fallback(IndyInterface.java:360) > at > org.codehaus.groovy.vmplugin.v8.IndyInterface.access$000(IndyInterface.java:50) > at > org.codehaus.groovy.vmplugin.v8.IndyInterface$FallbackSupplier.get(IndyInterface.java:282) > at > org.codehaus.groovy.vmplugin.v8.IndyInterface.lambda$fromCache$1(IndyInterface.java:304) > at > org.codehaus.groovy.vmplugin.v8.CacheableCallSite.getAndPut(CacheableCallSite.java:70) > at > org.codehaus.groovy.vmplugin.v8.IndyInterface.lambda$fromCache$2(IndyInterface.java:301) > at > org.codehaus.groovy.vmplugin.v8.IndyInterface.doWithCallSite(IndyInterface.java:376) > at > org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:298) > at geb.run(geb.groovy:2) > at > groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:287) > at groovy.lang.GroovyShell.run(GroovyShell.java:393) > at groovy.lang.GroovyShell.run(GroovyShell.java:382) > at groovy.ui.GroovyMain.processOnce(GroovyMain.java:649) > at groovy.ui.GroovyMain.run(GroovyMain.java:389) > at groovy.ui.GroovyMain.access$1400(GroovyMain.java:67) > at groovy.ui.GroovyMain$GroovyCommand.process(GroovyMain.java:313) > at groovy.ui.GroovyMain.processArgs(GroovyMain.java:141) > at groovy.ui.GroovyMain.main(GroovyMain.java:114) > at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:566) > at > org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:115) > at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:37) > Caused by: java.lang.ClassNotFoundException: geb.error.GebException > at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:180) > at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) > at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:148) > at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) > ... 56 more > > > -- Med venlig hilsen, Søren Berg Glasius Hedevej 1, Gl. Rye, 8680 Ry Mobile: +45 40 44 91 88 --- Press ESC once to quit - twice to save the changes.