当我尝试将我的selenium代码移动到java动态Web项目时,它给了我错误java.lang.ClassNotFoundException:org.openqa.selenium.WebDriver

时间:2015-11-18 19:54:17

标签: eclipse jsp selenium-webdriver

当我尝试将我的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代码?

2 个答案:

答案 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。然后  是我根据上面链接提供的说明做的:

  1. 解压缩了Selenium jar,在我的情况下,我使用了selenium-java-2.46.0
  2. 解压缩的文件夹包含selenium-java-2.46.0.jarlib文件夹
  3. selenium-java-2.46.0.jar复制到WEB-INF/lib
  4. lib文件夹下的所有邮箱复制到WEB-INF/lib并确保这些添加的邮箱显示在网络应用程序库
  5. 重新启动我的Tomcat服务器并运行我的代码。它就像魅力一样。
  6. 是的,正如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框架的所有传递依赖性的工作。