我试图尝试一个基本的geb脚本,不幸的是,我似乎遇到了一些严重的问题。
我使用IntelliJ,我已经从http://mvnrepository.com/artifact/org.gebish/geb-core/0.9.1下载了geb-core jar,以及它的4个依赖项。当我去运行我的基本脚本时,我已将它们添加到项目结构下的IntelliJ项目作为依赖项
import geb.Browser
Browser.drive {
go "http://google.com/ncr"
}
我得到一个非常讨厌的错误
Caught: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "com.gargoylesoftware.htmlunit.html.DomNode.getAttributes()Lorg/w3c/dom/NamedNodeMap;" the class loader (instance of org/codehaus/groovy/tools/RootLoader) of the current class, com/gargoylesoftware/htmlunit/html/DomNode, and the class loader (instance of <bootloader>) for interface org/w3c/dom/Node have different Class objects for the type org/w3c/dom/NamedNodeMap used in the signature
java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "com.gargoylesoftware.htmlunit.html.DomNode.getAttributes()Lorg/w3c/dom/NamedNodeMap;" the class loader (instance of org/codehaus/groovy/tools/RootLoader) of the current class, com/gargoylesoftware/htmlunit/html/DomNode, and the class loader (instance of <bootloader>) for interface org/w3c/dom/Node have different Class objects for the type org/w3c/dom/NamedNodeMap used in the signature
at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:190)
at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:268)
at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:156)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:455)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:329)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:394)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:474)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:452)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.<init>(HtmlUnitDriver.java:181)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.<init>(HtmlUnitDriver.java:191)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.<init>(HtmlUnitDriver.java:187)
at geb.driver.NameBasedDriverFactory.getDriver(NameBasedDriverFactory.groovy:42)
at geb.driver.CachingDriverFactory$_getDriver_closure3.doCall(CachingDriverFactory.groovy:80)
at geb.driver.CachingDriverFactory$_getDriver_closure3.doCall(CachingDriverFactory.groovy)
at geb.driver.CachingDriverFactory$SimpleCache.get(CachingDriverFactory.groovy:30)
at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:79)
at geb.Configuration.createDriver(Configuration.groovy:354)
at geb.Configuration.getDriver(Configuration.groovy:343)
at geb.Browser.getDriver(Browser.groovy:105)
at geb.Browser.go(Browser.groovy:394)
at geb.Browser$go$1.callCurrent(Unknown Source)
at geb.Browser.go(Browser.groovy:386)
at gebtest$_run_closure1.doCall(gebtest.groovy:14)
at gebtest$_run_closure1.doCall(gebtest.groovy)
at geb.Browser.drive(Browser.groovy:860)
at geb.Browser$drive$0.callStatic(Unknown Source)
at geb.Browser.drive(Browser.groovy:830)
at geb.Browser$drive.call(Unknown Source)
at gebtest.run(gebtest.groovy:13)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
答案 0 :(得分:5)
我建议使用Gradle,这样可以避免手动设置项目和解决Geb依赖项。使用gradle执行此操作的最简单方法是:
安装GVM Tool:http://gvmtool.net/
通过gvm安装Gradle:gvm install gradle 1.12
创建build.gradle
文件:
apply plugin: 'idea'
apply plugin: 'groovy'
repositories {
mavenCentral()
}
dependencies {
compile 'org.gebish:geb-core:0.9.3'
compile 'org.codehaus.groovy:groovy-all:2.3.3'
compile 'org.seleniumhq.selenium:selenium-firefox-driver:2.42.2'
}
创建一个src/main/groovy
目录。
运行gradle idea
。
打开生成的构思项目文件。
将Geb脚本放在src/main/groovy
目录中并运行它。