Web服务中的selenium抛出java.lang.NoClassDefFoundError异常

时间:2013-05-21 15:34:44

标签: java web-services selenium webserver selenium-webdriver

我创建了一个动态Web项目,实现了一个使用selenium的函数,在项目的buidlpath中添加了selenium-server-standalone-2.32.0.jar,然后使用向导生成Web服务器和客户端。它弹出一个警告:

The service class "test.eko3.TestEko3" does not comply to one or more requirements of the JAX-RPC 1.1 specification, and may not deploy or function correctly.
The value type "org.openqa.selenium.WebDriver" used via the service class "test.eko3.TestEko3" does not have a public default constructor. Chapter 5.4 of the JAX-RPC 1.1 specification requires a value type to have a public default constructor, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the value type during deserialization.
The field or property "windowHandles" on the value type "org.openqa.selenium.WebDriver" used via the service class "test.eko3.TestEko3" has a data type, "java.util.Set", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

我点击确定并继续生成服务器和客户端。当它完成并且我试图从客户端测试它时它在结果视图中显示了这个异常:

Exception: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver; nested exception is: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver Message: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver; nested exception is: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver

然后我将相同的jar文件添加到WEB-INF / lib文件夹中并再次运行它,但它显示相同的异常。还有其他地方我需要添加jar吗?任何帮助将不胜感激。

服务器的代码如下:

package test.eko3;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.WebDriverWait;

public class TestEko3 {
public String Ekobilet(String from, String to, String date) {

    //Firefox browser instantiation
    WebDriver driver = new FirefoxDriver();

    //Loading the URL
    driver.get("http://www.amadeusepower.com/trek/portals/trek/default.aspx?Culture=en-US");


    WebElement radioOneway = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_rbFlightType_1"));
    radioOneway.click();

    waitForPageLoaded(driver);


    WebElement fromText = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_txtSearch_txtFrom"));
    fromText.clear();
    fromText.sendKeys(from); 


    WebElement toText = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_txtSearch_txtTo"));
    toText.sendKeys(to); 


    WebElement dateText = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_txtDepartureDate_txtDate"));
    dateText.sendKeys(date); 

    //Sign in button identification and click it
    WebElement searchbutton = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_btnSearch"));
    searchbutton.click();

    String page = driver.getPageSource();


    //Closing the browser
    driver.close();

    return page;

    }

    public static void waitForPageLoaded(WebDriver driver) {

        ExpectedCondition<Boolean> expectation = new
    ExpectedCondition<Boolean>() {
           public Boolean apply(WebDriver driver) {
             return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
           }
         };

        Wait<WebDriver> wait = new WebDriverWait(driver,30);
         try {
                 wait.until(expectation);
         } catch(Throwable error) {
                 System.out.println("exception yavrum");
         }
    } 

}

1 个答案:

答案 0 :(得分:2)

也许您正在使用selenium独立jar,这对java中的动态Web项目不利。见http://me-ol-blog.blogspot.co.il/2013/07/using-selenium-in-java-dynamic-web.html