2013-02-19 12 views
5

Vorrei automatizzare Firefox utilizzando Java tramite un progetto Selenium WebDriver.Esempio Maven pom.xml per il progetto Selenium WebDriver basato su Java per Firefox

come non ho mai usato né SeleniumMaven prima che io non sono a conoscenza di come impostare un adeguato file di Maven pom.xml per creare un progetto, che poi può essere importato in Eclipse.

Su http://docs.seleniumhq.org/docs/03_webdriver.jsp#introducing-webdriver ho trovato il seguente esempio per il browser 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> 

Sareste così gentile e mi mostra come adattare questa pom.xml da applicare per il browser Firefox, dicono Firefox 17?

risposta

4

Con la dipendenza da selenio-java ottieni tutti i collegamenti java per tutti i browser. Quindi, non è necessario cambiare nulla nel tuo pom da quello che hai già. L'unica cosa che cambierebbe è il codice di inizializzazione del driver, che è driver = new FirefoxDriver() al posto di OperaDriver.

+0

Grazie! Ho interpretato erroneamente la dipendenza dell'opera nel file pom.xml e ho pensato che sarebbe stata necessaria una sezione di Firefox corrispondente. – Thomas853

1

so, che Firefox 17 non è stato sostenuto in 2.28.0, ma la navigazione in Selenium project homepage mi ha dato una nuova visione - ultima versione è 2.30.0 in modo da aggiornare questo:

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

A tal:

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

Pulire e riprovare. Speriamo che aiuti. Il consiglio generale è: Usa sempre l'ultima versione di Selenium

+0

2,28 supportate da FF 17 dal FF17 stato aggiunto il supporto a 2.27 per sé come per http://selenium.googlecode.com/git/java/CHANGELOG –

+0

17 FF è stato non funziona per me in 2.28. Basta dire ' –

+0

Ok .. non ho provato come tale ..semplicemente andando dal registro delle modifiche :) –

1

Ecco un POM base preso da 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> 

Questo sarà:

  • Scarica librerie Selenio tutte richieste
  • Scaricare i file binari dei driver standalone (ad esempio chromedriver, phantomJS , ecc.)
  • Giù caricano le librerie PhantomJSdriver
  • Aggiungi TestNG come un framework di test
  • Aggiungere in tutta la Hamcrest matchers per le affermazioni di prova chiari (vedi https://code.google.com/p/hamcrest/wiki/Tutorial)

Il link originale vi porterà a una configurazione di base del progetto che si può basta controllare ed eseguire se si desidera più di un semplice POM.

+0

Pom semplice e piacevole. – cbaldan

+0

IDEA segnala un errore _Impossibile risolvere il simbolo 'webdriver.chrome.driver'_. Come risolvere questo? – al0

+0

Esegui un ciclo di vita del software (ad esempio, verifica) tramite IDEA. Se non si sta eseguendo un processo Maven, Maven non sarà in grado di specificare la posizione del driver. Se si desidera eseguire un test tramite IDEA senza invocare Maven, sarà necessario impostare il valore di "webdriver.chrome.driver" come parte della configurazione di test. – Ardesco

1

Per utilizzare solo l'implementazione di FirefoxDriver, non è necessario utilizzare l'artefatto selenio-java. Piuttosto, puoi semplicemente aggiungere la dipendenza dall'artefatto di Firefox. Aggiungere la seguente dipendenza alla vostra pom.xml:

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