我有一个grails / groovy项目,它有一个功能,它使用selenium独立服务器来进行一些测试自动化。
我一直在生产模式下运行grails项目时遇到此错误。如果我直接从IntelliJ运行它,它可以很好地工作,所以我不确定到底出了什么问题。
以下是相关代码:
WebDriver driver
DesiredCapabilities capability = DesiredCapabilities.chrome()
capability.setBrowserName("chrome")
capability.setPlatform(Platform.WINDOWS)
driver = new RemoteWebDriver( new URL("http://192.168.83.124:4444/wd/hub"), capability);
我在最后一行收到ClassNotFoundException错误。
在我的项目库中,我正在使用selenium-java-2.53.0.jar,selenium-server-standalone-2.53.0.jar和sources有selenium-java-2.53.0-srcs.jar
我完全不知道出了什么问题,我在网上搜索了一个解决方案但却一无所获。任何帮助表示赞赏。
以下是错误的全文:
2017-12-08 15:59:56,381 [http-bio-8080-exec-1] ERROR
errors.GrailsExceptionResolver - ClassNotFoundException occurred when processing request: [GET] /Diversotron-0.1/api/edit
com.google.common.base.Function. Stacktrace follows:
java.lang.ClassNotFoundException: com.google.common.base.Function
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585)
at java.lang.Class.getDeclaredConstructors(Class.java:1906)
at
org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
at diversotron.PropotronService.setPropotron(PropotronService.groovy:25)
at diversotron.ApiController.edit(ApiController.groovy:53)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
答案 0 :(得分:0)
这是因为Selenium未在我的BuildConfig.groovy文件中声明。这就是为什么它通过IntelliJ而不是在生产中运行。做grails prod war将不包括库。它们必须在buildconfoig.groovy文件中指定。
我必须添加这些行。
def seleniumVersion = "2.53.0"
在依赖关系中我不得不添加:
runtime "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
希望这会帮助其他人下线!
答案 1 :(得分:-1)
地图镶边选项=新地图();
ChromeOptions.put( “二进制”, “/使用/ LIB /铬的浏览器/铬浏览器”);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY,chromeOptions);
网络驱动程序驱动程序=新的Chrome驱动程序(功能); 试试这个