2013-02-19 8 views
5

Chciałbym zautomatyzować Firefox przy użyciu Java poprzez projekt .Przykład Maven pom.xml dla opartego na Javie projektu Selenium WebDriver dla Firefox

Ponieważ nigdy nie używałem Selenium ani Maven, zanim nie wiem, jak skonfigurować odpowiedni plik Maven pom.xml do stworzenia projektu, który następnie można zaimportować do Eclipse.

Na http://docs.seleniumhq.org/docs/03_webdriver.jsp#introducing-webdriver Znalazłem następujący przykład dla przeglądarki Opera:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>MySel20Proj</groupId> 
    <artifactId>MySel20Proj</artifactId> 
    <version>1.0</version> 
    <dependencies> 
     <dependency> 
      <groupId>org.seleniumhq.selenium</groupId> 
      <artifactId>selenium-java</artifactId> 
      <version>2.28.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.opera</groupId> 
      <artifactId>operadriver</artifactId> 
     </dependency> 
    </dependencies> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>com.opera</groupId> 
       <artifactId>operadriver</artifactId> 
       <version>1.1</version> 
       <exclusions> 
        <exclusion> 
         <groupId>org.seleniumhq.selenium</groupId> 
         <artifactId>selenium-remote-driver</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
</project> 

byłbyś tak miły i mi pokazać, jak dostosować ten pom.xml zastosować dla przeglądarki Firefox, powiedzmy Firefox 17?

Odpowiedz

4

Z zależnościami seleni-java otrzymujesz wszystkie powiązania java dla wszystkich przeglądarek. Więc nie musisz zmieniać niczego w swoim pom od tego, co już masz. Jedyną zmianą jest kod inicjujący sterownik, którym jest driver = new FirefoxDriver() zamiast OperaDriver.

+0

Dzięki! Źle zinterpretowałem zależność operową w pliku pom.xml i pomyślałem, że odpowiednia sekcja Firefoksa byłaby wymagana. – Thomas853

1

wiem, że Firefox 17 nie została poparta w 2.28.0, ale przeglądając Selenium project homepage dał mi nowe spojrzenie - najnowsza wersja jest 2.30.0 więc aktualizować to:

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

do tego:

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

Oczyść i spróbuj ponownie. Mam nadzieję, że to pomaga. Ogólna rada jest następująca: Zawsze używaj najnowszej wersji Selenium

+0

2,28 obsługuje FF 17 od FF17 wsparcie dodano 2,27 sama jak za http://selenium.googlecode.com/git/java/CHANGELOG –

+0

FF 17 została nie działa dla mnie w 2.28. Po prostu mówię " –

+0

Ok..Nie próbowałem jako taki ..po prostu przechodząc przez dziennik zmian :) –

1

Oto podstawowe POM zaczerpnięte z https://github.com/Ardesco/selenium-standalone-server-plugin:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 

<groupId>com.lazerycode.selenium</groupId> 
<artifactId>maven-template</artifactId> 
<version>1.0-SNAPSHOT</version> 
<modelVersion>4.0.0</modelVersion> 

<name>Selenium Maven Template</name> 
<description>A Maven Template For Selenium</description> 
<url>http://www.lazerycode.com</url> 

<licenses> 
    <license> 
     <name>Apache 2</name> 
     <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> 
     <distribution>repo</distribution> 
     <comments>A business-friendly OSS license</comments> 
    </license> 
</licenses> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <selenium.version>2.45.0</selenium.version> 
    <overwrite.binaries>false</overwrite.binaries> 
    <browser>firefox</browser> 
    <threads>1</threads> 
    <remote>false</remote> 
    <seleniumGridURL/> 
    <platform/> 
    <browserVersion/> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.hamcrest</groupId> 
     <artifactId>hamcrest-all</artifactId> 
     <version>1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>${selenium.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-remote-driver</artifactId> 
     <version>${selenium.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.codeborne</groupId> 
     <artifactId>phantomjsdriver</artifactId> 
     <version>1.2.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.8.8</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<profiles> 
    <profile> 
     <id>selenium-tests</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
         <source>1.7</source> 
         <target>1.7</target> 
        </configuration> 
        <version>2.3.2</version> 
       </plugin> 
       <plugin> 
        <groupId>com.lazerycode.selenium</groupId> 
        <artifactId>driver-binary-downloader-maven-plugin</artifactId> 
        <version>1.0.7</version> 
        <configuration> 
         <rootStandaloneServerDirectory>${standalone.binary.root.folder}</rootStandaloneServerDirectory> 
         <downloadedZipFileDirectory>${project.basedir}/src/test/resources/selenium_standalone_zips</downloadedZipFileDirectory> 
         <customRepositoryMap>${project.basedir}/src/test/resources/RepositoryMap.xml</customRepositoryMap> 
         <overwriteFilesThatExist>${overwrite.binaries}</overwriteFilesThatExist> 
        </configuration> 
        <executions> 
         <execution> 
          <goals> 
           <goal>selenium</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <version>2.7.2</version> 
        <configuration> 
         <parallel>methods</parallel> 
         <threadCount>${threads}</threadCount> 
         <systemProperties> 
          <browser>${browser}</browser> 
          <screenshotDirectory>${project.build.directory}/screenshots</screenshotDirectory> 
          <remoteDriver>${remote}</remoteDriver> 
          <gridURL>${seleniumGridURL}</gridURL> 
          <desiredPlatform>${platform}</desiredPlatform> 
          <desiredBrowserVersion>${browserVersion}</desiredBrowserVersion> 

          <!--Set properties passed in by the driver binary downloader--> 
          <phantomjs.binary.path>${phantomjs.binary.path}</phantomjs.binary.path> 
          <webdriver.chrome.driver>${webdriver.chrome.driver}</webdriver.chrome.driver> 
          <webdriver.ie.driver>${webdriver.ie.driver}</webdriver.ie.driver> 
          <webdriver.opera.driver>${webdriver.opera.driver}</webdriver.opera.driver> 
         </systemProperties> 
         <includes> 
          <include>**/*WebDriver.java</include> 
         </includes> 
        </configuration> 
        <executions> 
         <execution> 
          <goals> 
           <goal>integration-test</goal> 
           <goal>verify</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

To będzie:

  • pobrać wszystkie wymagane biblioteki selen
  • Pobierz samodzielnych plików binarnych sterowników (np chromedriver, phantomJS itp.)
  • W dół załadować biblioteki PhantomJSdriver
  • Dodaj TestNG jako ramy testowej
  • Dodaj we wszystkich Hamcrest dopasowujące jasnych twierdzeń testowych (patrz https://code.google.com/p/hamcrest/wiki/Tutorial)

Oryginalny link przeniesie Cię do podstawowej konfiguracji projektu, który można po prostu sprawdź i uruchom, jeśli chcesz czegoś więcej niż POM.

+0

Miła i prosta pom. – cbaldan

+0

IDEA zgłasza błąd _Nierozpoznawalny symbol "webdriver.chrome.driver'_. Jak to naprawić? – al0

+0

Przeprowadź cykl życia maven (np. Zweryfikuj) za pomocą IDEA. Jeśli nie korzystasz z procesu Maven, Maven nie będzie mógł określić lokalizacji sterownika. Jeśli chcesz przeprowadzić test przez IDEA bez wywoływania maven, musisz ustawić wartość "webdriver.chrome.driver" jako część konfiguracji testu. – Ardesco

1

Aby używać tylko implementacji FirefoxDriver, nie trzeba używać artefaktu selenium-java. Zamiast tego możesz po prostu dodać zależność od artefaktu Firefoksa. Dodaj następującą zależność do pom.xml:

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