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

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

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.0b3 тоже не работает (отсутствуют зависимости). Вот сообщение об ошибке:

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

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

Кому-нибудь удается заставить его работать с Maven?


person Tristan    schedule 23.05.2011    source источник


Ответы (4)


Для меня это работает (с 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, чтобы заставить ее передавать некоторые верные исключения, но вам это может не понадобиться.

person AsGoodAsItGets    schedule 25.05.2011
comment
Вы совершенно правы, это работает! Я думал, что уже пытался добавить pom. Я добавил комментарий в официальную вики (code.google.com/p/selenium /wiki/Использование веб-драйвера) - person Tristan; 25.05.2011
comment
Неверная информация. Вы описываете, как вытащить только одну часть стека селена, и в результате вы не вытаскиваете зависимости. Это не официальный способ сделать это. - person Ardesco; 26.05.2011
comment
Я никогда не утверждал, что это официальный способ сделать это. Я просто сказал, что это сработало для меня. - person AsGoodAsItGets; 26.05.2011
comment
Вы описываете как вытащить только одну часть стека селениума Извините Ardesco, но вы не правы, потому что артефакт селениума pom зависит от селениума-удаленного управления и селениума-сервера, поэтому нужен более полный, чем селениум-удаленный -только управление (см. repo1.maven .org/maven2/org/seleniumhq/selenium/selenium/2.0b3/). - person Tristan; 26.05.2011
comment
вздох прочитайте ветку списка рассылки selenium dev, которую я предоставил. Как указано в моем ответе, они переключили его с селена на селен-пульт-управление. Это нарушило зависимость каждого от POM, когда они это сделали. Продолжайте использовать это во что бы то ни стало, но это неправильно. - person Ardesco; 27.05.2011
comment
Я прочитал все это, чувак... Это не противоречит использованию приведенной выше зависимости. Может быть, вам стоит попробовать себя, и вы увидите, что ваш проект все еще работает. - person Tristan; 27.05.2011

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

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium</artifactId>
            <version>2.0rc2</version>
            <type>pom</type>
        </dependency>
person sebarmeli    schedule 15.06.2011

С RC3 вам нужно:

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

включить всю банку

person sebarmeli    schedule 22.06.2011

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

<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>
person pablo pidal    schedule 03.03.2013