Каков «официальный» способ использования Selenium 2 (Selenium WebDriver) с Maven?

#maven-2 #selenium-webdriver

#maven-2 #selenium-webdriver

Вопрос:

Я просто пытаюсь заставить базовый пример selenium2 работать с Firefox 4, используя Maven для получения Selenium jars :

 public class Selenium2Example  {
    public static void main(String[] args) {
        // Create a new instance of the Firefox driver
        // Notice that the remainder of the code relies on the interface, 
        // not the implementation.
        WebDriver driver = new FirefoxDriver();

        // And now use this to visit Google
        driver.get("http://www.google.com");

        // Find the text input element by its name
        WebElement element = driver.findElement(By.name("q"));

        // Enter something to search for
        element.sendKeys("Cheese!");

        // Now submit the form. WebDriver will find the form for us from the element
        element.submit();

        // Check the title of the page
        System.out.println("Page title is: "   driver.getTitle());

        //Close the browser
        driver.quit();
    }
}
  

Если я пойду туда: http://code.google.com/p/selenium/wiki/UsingWebDriver в нем говорится, что я должен попробовать зависимость, подобную этой :

 <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium</artifactId>
    <version>2.0b3</version>
</dependency> 
  

но последние jar-файлы не могут быть найдены ни в каких репозиториях, последняя версия, которая работает (со всеми найденными зависимостями), — «2.0a4» (с 2.0a5 по 2.0a7 и с 2.0b1 по 2.0b3 отсутствуют основные jar-файлы или отсутствующие зависимости), и в этой версии «2.04» нет нужных классов, чтобы заставить пример работать.

Если я пойду туда: http://seleniumhq.org/docs/03_webdriver.html#chapter03-reference в нем говорится, что я должен использовать эту зависимость :

 <dependency>
    <groupId>org.seleniumhq.webdriver</groupId>
    <artifactId>webdriver-firefox</artifactId>
    <version>0.9.7376</version>
</dependency>
  

Это позволяет скомпилировать пример, но этот выпуск не обновлялся с октября 2009 года и не запускается с Firefox 4 (см. http://repo1.maven.org/maven2/org/seleniumhq/webdriver/webdriver-firefox /)

Если я пойду туда http://seleniumhq.org/download/maven.html , в нем говорится, что я должен попробовать что-то вроде :

 <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-firefox-driver</artifactId>
    <version>...</version>
</dependency> 
  

Но версия 2.0 b3 также не работает (отсутствуют зависимости). Вот сообщение об ошибке :

 23/05/11 22:09:07 CEST: Build errors for first-webdriver-test; org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project first-webdriver-test: Unable to get dependency information for org.apache.httpcomponents:httpcore:jar:4.0.1: Failed to process POM for org.apache.httpcomponents:httpcore:jar:4.0.1: Non-resolvable parent POM org.apache.httpcomponents:httpcomponents-core:4.0.1 for org.apache.httpcomponents:httpcore:4.0.1: Failed to resolve POM for org.apache.httpcomponents:httpcomponents-core:4.0.1 due to Missing:
----------
1) org.apache.httpcomponents:httpcomponents-core:pom:4.0.1
----------
1 required artifact is missing.

for artifact: 
  org.apache.httpcomponents:httpcomponents-core:pom:4.0.1

from the specified remote repositories:
  central (http://repo1.maven.org/maven2, releases=true, snapshots=false)
  

Я не знаю значения этой ошибки, поскольку я могу найти запрошенный pom здесь: http://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom

Итак, единственный способ, которым я могу заставить пример работать на данный момент, — это вручную загрузить банки 2.0b3.

Кому-нибудь удалось заставить это работать с Maven?

Ответ №1:

Начиная с RC2, вам просто нужно:

         <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium</artifactId>
            <version>2.0rc2</version>
            <type>pom</type>
        </dependency>
  

Ответ №2:

Для меня это работает (с Maven 2.2.1):

   <dependency>
     <groupId>org.seleniumhq.selenium</groupId>
     <artifactId>selenium</artifactId>
     <version>2.0b3</version>
     <type>pom</type>
  </dependency>
  

Обратите внимание на эту строку: <type>pom</type>

Кроме того, мне пришлось добавить зависимость от библиотеки junit, чтобы заставить ее передавать некоторые безошибочные исключения, но вам это может не понадобиться.

Комментарии:

1. Вы абсолютно правы, это работает! Я думал, что уже пытался добавить «pom». Я добавил комментарий в официальную вики ( code.google.com/p/selenium/wiki/UsingWebDriver )

2. Неверная информация. Вы описываете, как извлечь только одну часть стека selenium, и в результате вы не удаляете зависимости. Это не «официальный» способ сделать это.

3. Я никогда не утверждал, что это «официальный» способ сделать это. Я только что сказал, что у меня это сработало.

4. «Вы описываете, как извлечь только одну часть стека selenium» Извините, Ардеско, но вы ошибаетесь, потому что артефакт pom «selenium» зависит от selenium-remote-control и selenium-server, поэтому он необходим более полным, чем только «selenium-remote-control» (см. repo1.maven.org/maven2/org/seleniumhq/selenium/selenium/2.0b3 /… ).

5. вздох прочитайте предоставленную мной ветку списка рассылки selenium dev. Как указано в моем ответе, они переключили его с selenium на selenium-remote-control. Это нарушило зависимость каждого от POM, когда они это сделали. Продолжайте использовать это всеми средствами, но это неправильно.

Ответ №3:

С RC3 вам нужно:

 <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.0rc3</version>
</dependency>
  

включить весь jar

Ответ №4:

Для меня это работает:

 <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.8.2</version>
</dependency>

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.29.1</version>
</dependency> 

  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-firefox-driver</artifactId>
    <version>2.29.1</version>
</dependency>

<dependency> 
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>               
</dependency>