#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>