2009-09-25 54 views
3

嗨,我在運行mvn -e integration-test時收到了一個找不到符號的錯誤。爲什麼會發生這種情況,如果該軟件包在我的存儲庫?我曾嘗試下載並手動安裝,但它沒有什麼區別。這是maven常見錯誤嗎?找不到符號:用maven運行selenium時

我使用的是Vista家庭版,

錯誤消息

[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Compilation failure 
D:\MyWorks\steps\step6\functest\src\it\com\mycompany\app\functest\FirstTest.java:[22,25] cannot find symbol 
symbol : constructor SeleniumServer(int) 
location: class org.openqa.selenium.server.SeleniumServer 

教程中使用。 http://binil.wordpress.com/2006/12/08/automated-smoke-tests-with-selenium-cargo-testng-and-maven/

POM

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <artifactId>myapp</artifactId> 
    <groupId>com.mycompany</groupId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

<artifactId>functest</artifactId> 
    <name>functional-tests</name> 
    <packaging>pom</packaging> 

    <dependencies> 
    <dependency> 
     <groupId>org.seleniumhq.selenium.client-drivers</groupId> 
     <artifactId>selenium-java-client-driver</artifactId> 
     <version>1.0</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.openqa.selenium.server</groupId> 
     <artifactId>selenium-server</artifactId> 
     <version>1.0.1</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>5.1</version> 
     <scope>test</scope> 
     <classifier>jdk15</classifier> 
    </dependency> 
    </dependencies> 

    <build> 
    <testSourceDirectory>src/it</testSourceDirectory> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <executions> 
      <execution> 
      <goals> 
       <goal>testCompile</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <source>1.5</source> 
      <target>1.5</target> 
     </configuration> 
     </plugin> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.4.3</version> 
     <executions> 
      <execution> 
      <phase>integration-test</phase> 
      <goals> 
       <goal>test</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <suiteXmlFiles> 
      <suiteXmlFile>src/it/testng.xml</suiteXmlFile> 
      </suiteXmlFiles> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

PATH硒我的機器上的服務器類。一切都在那裏,我檢查。

.m2目錄\庫\組織\ openqa \硒\服務器\硒 - 服務器\ 1.0.1 \硒服務器1.0.1.jar \組織\ openqa \硒\服務器\

回答

2

錯誤的類(org.openqa.selenium.server.SeleniumServer)在您已經列出的selenium-server依賴項中定義。

我可以看到的唯一差異是本教程中的selenium-server和selenium-java-client-driver版本在0.9版本中。查看源代碼,在1.0.1版本中已經刪除了構造函數。

爲了本教程的目的,最簡單的方法是回滾到0.9版本,然後一旦您更熟悉API,請回退到1.0.1並相應地進行重構。

以下是適用於1.0 version的Javadoc(與0.9 version比較),這表明該端口(int參數給構造)現在只能作爲命令行參數的主方法通過:

**main** 

public static void main(java.lang.String[] args) 
      throws java.lang.Exception 

Starts up the server on the specified port (or default if no port was specified) and then starts interactive mode if specified. 

Parameters: 
    args - - either "-port" followed by a number, or "-interactive" 
3

您已列爲依賴關係的版本(1.0.1)中不再存在類似於構造函數SeleniumServer(int)的聲音。

如果我能在網上找到SeleniumServer的javadocs,那麼可以建議使用哪一個。

4

int(端口)作爲參數的構造函數確實已被刪除(請參閱Changeset:2260)。因此,使用無參數的構造函數SeleniumServer()創建您SeleniumServer(4444反正是默認端口):

@BeforeSuite 
public void startSeleniumServer() throws Exception { 
    seleniumServer = new SeleniumServer(); 
    seleniumServer.start(); 
} 

或者使用SeleniumServer(RemoteControlConfiguration configuration)如果你需要傳遞的配置選項。