使用Selenium Standalone Server的ClassNotFoundException

时间:2017-12-08 18:21:09

标签: selenium grails

我有一个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)

2 个答案:

答案 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);

网络驱动程序驱动程序=新的C​​hrome驱动程序(功能); 试试这个