当我尝试将我的selenium代码移动到java动态Web项目时,它会给我错误java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
我安装了eclispe Juno。请注意,我没有起诉Maven。
配置Apache tomcat 7
并创建了一个简单的动态Web项目,其中包含一个带有<form>
的jsp文件和一个简单的提交按钮<input type="submit">
。在项目中正确显示网页。
然后将jsp文件表单操作更新为<form action="test">
在 test.java servlet文件中添加了行selenium行作为
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
然后再次运行该项目,但错误如下
Caused by: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Unknown Source)
at java.lang.Class.getDeclaredFields(Unknown Source)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:139)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
我确保在Web App Libraries中添加了Selenium Jar,并且jar显示在WEB-INF/lib/selenium-server-standalone-2.44.0.jar
下。但是这个错误仍然存在。有什么我在这里失踪的东西。任何线索/帮助都非常感激。
我尝试在动态Web项目中添加其他jars,如mysql,log4j,并编写使用这些jar的代码,没有问题。只有硒才会出现这个问题。 是否无法在动态Web项目中使用selenium代码?
答案 0 :(得分:2)
我设法通过此链接的帮助找到了解决方案 http://me-ol-blog.blogspot.in/2013/07/using-selenium-in-java-dynamic-web.html
首先在我的Dynamic Web Project中从WEB-INF/lib
删除了我的Selenium jar。然后
是我根据上面链接提供的说明做的:
selenium-java-2.46.0
selenium-java-2.46.0.jar
和lib
文件夹selenium-java-2.46.0.jar
复制到WEB-INF/lib
lib
文件夹下的所有邮箱复制到WEB-INF/lib
并确保这些添加的邮箱显示在网络应用程序库是的,正如tim-slifer正确指出的那样,我们应该使用selenium-java jar而不是独立的服务器jar。 另外,我想,如果使用MAVEN,我将不会遇到这些问题。
`
答案 1 :(得分:1)
我从未在动态网络项目中使用过selenium,但我非常确定您的问题是使用selenium-server-standalone jar作为依赖项。 Selenium-server-standalone启动了一个Selenium Grid实例,它与框架本身不同。相反,抓住java语言绑定(selenium-java.jar)作为依赖。
快速说明......我确定您可能有理由不使用Maven,但它可能有助于您的依赖关系管理。否则,您可能正在进行一些跟踪Selenium框架的所有传递依赖性的工作。