0

動的 Web プロジェクトから Web サービスを実装しようとしました。selenium-server-standalone-2.32.0.jar ファイルをビルドパスに追加し、それを WEB-INF/lib フォルダーにも追加しました。次に、Web サービス ウィザードを使用して、プロジェクトから 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.

[OK] をクリックすると、Web サーバーとクライアントが生成され、Eclipse のブラウザーにクライアントが表示されました。しかし、パラメーターを入力して呼び出しをクリックすると、結果セクションに次の例外が表示されました。

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 

Selenium jar を buildpath と WEB-INF/lib フォルダーの両方に追加したので、クラスが見つからない理由がわかりません。サーバーのコードは次のとおりです。

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();

//      Writer out = new BufferedWriter(new OutputStreamWriter(
//                  new FileOutputStream("ekobiletselenium.html"), "UTF-8"));
//              try {
//                  out.write(page);
//              } finally {
//                  out.close();
//              }
    //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");
         }
    } 

}

誰かがこれの原因を教えてもらえますか? セレンが依存しているjarファイルがありませんか? どんな助けでも大歓迎です。

4

3 に答える 3

0

このリンクを確認してください。@thedrs によって回答されたアイデアを得ることができます。

http://me-ol-blog.blogspot.co.il/2013/07/using-selenium-in-Java-dynamic-web.html

于 2015-01-28T13:14:11.153 に答える
0

この例外は、プロジェクトでセレンが完全に参照されていない場合に発生します。

この問題を解決するために実行できる手順は次のとおりです。

  1. Selenium Client & WebDriver Java Bindingsをここからダウンロードしてください。
  2. ダウンロードしたファイルを解凍します。
  3. メインのセレン '.jar' (例: selenium-java-2.42.2.jar) を Web プロジェクトのWebContent/WEB-INF/libディレクトリにコピーします。
  4. また、解凍された selenium libs dir のすべてのファイルを Web プロジェクトのdir にコピーします。.jarWebContent/WEB-INF/lib

java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriverこれで、例外を取得せずにコードを実行できるはずです。

于 2014-09-14T19:21:26.963 に答える