2013-02-19 2 views
5

Ich würde gerne Firefox mit Java über ein Selenium WebDriver Projekt automatisieren.Beispiel Maven pom.xml für Java-basierte Selenium WebDriver-Projekt für Firefox

Da ich nie zuvor Selenium noch Maven verwendet habe, bin ich nicht vertraut mit dem Erstellen einer geeigneten Maven pom.xml Datei, um ein Projekt zu erstellen, das dann in Eclipse importiert werden kann.

Auf http://docs.seleniumhq.org/docs/03_webdriver.jsp#introducing-webdriver ich das folgende Beispiel für den Opera-Browser gefunden:

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

Sie so freundlich sein würde und mir zeigen, wie diese pom.xml anpassen für den Firefox-Browser anwenden, sagen Firefox 17?

Antwort

4

Mit Selen-Java-Abhängigkeit erhalten Sie alle Java-Bindungen für alle Browser. Also musst du nichts an deinem Pom ändern, was du bereits hast. Die einzige Sache, die sich ändern würde, ist Ihr Treiberinitialisierungscode, der Treiber = neuer FirefoxDriver() anstelle von OperaDriver ist.

+0

Danke! Ich habe die Abhängigkeit von der Oper in der Datei pom.xml falsch interpretiert und dachte, dass ein entsprechender Firefox-Abschnitt erforderlich wäre. – Thomas853

1

Ich weiß, dass Firefox 17 nicht in 2.28.0 unterstützt wurde, aber das Surfen im Selenium project homepage gab mir neue Einblicke - neueste Version ist 2.30.0 dies so aktualisieren:

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

Um dies:

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

Reinigen und erneut versuchen. Hoffentlich hilft es. Der allgemeine Hinweis hier ist: Verwenden Sie immer die neueste Version von Selenium

+0

2,28 tut Unterstützung FF 17 seit FF17 Unterstützung in 2,27 hinzugefügt wurde, sich als pro http://selenium.googlecode.com/git/java/CHANGELOG –

+0

FF 17 wurde funktioniert nicht für mich in 2.28. Sayin ' –

+0

Ok .. Ich habe nicht versucht, als solche ..einfach gehen durch das Änderungsprotokoll :) –

1

Hier ist ein Grund aus https://github.com/Ardesco/selenium-standalone-server-plugin genommen POM:

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

Dies wird:

  • Laden Sie alle erforderlichen Selen Bibliotheken
  • die Standalone-Treiber Binärdateien Download (zB chromedriver, PhantomJS usw.)
  • Down laden die PhantomJSdriver Bibliotheken
  • hinzufügen TestNG als Test-Framework
  • hinzufügen in allen hamcrest Matcher für klare Test Behauptungen (siehe https://code.google.com/p/hamcrest/wiki/Tutorial)

Der ursprüngliche Link auf eine Basisprojekt Setup nehmen, den Sie mit einfach auschecken und ausführen, wenn du mehr als nur ein POM willst.

+0

Schöne und einfache Pom. – cbaldan

+0

IDEA meldet einen Fehler _Kann das Symbol 'webdriver.chrome.driver'_ nicht auflösen. Wie behebe ich das? – al0

+0

Führen Sie über IDEA einen Maven-Lebenszyklus (z. B. Verify) aus. Wenn Sie keinen Maven-Prozess ausführen, kann Maven den Standort des Treibers nicht angeben. Wenn Sie einen Test über IDEA ausführen möchten, ohne maven aufzurufen, müssen Sie den Wert von "webdriver.chrome.driver" als Teil der Testkonfiguration festlegen. – Ardesco

1

Um nur die FirefoxDriver-Implementierung zu verwenden, müssen Sie das Selen-Java-Artefakt nicht verwenden. Stattdessen können Sie einfach die Abhängigkeit vom Firefox-Artefakt hinzufügen. Fügen Sie die folgende Abhängigkeit zu Ihrem pom.xml:

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