Erste Schritte: Selenium WebDriver mit Java unter Microsoft Windows

Meine persönliche Meinung ist, dass Java wohl die populärste Programmiersprache für Selenium Projekte ist. In diesem Beitrag möchte ich zeigen, wie du damit am einfachsten anfängst.

Es gibt drei Herangehensweisen um mit Selenium in Java anzufangen:

Möglichkeit 1: Maven
Die offizielle Anleitung: Setting Up a Selenium-WebDriver Project
Die anspruchsvolle Anleitung (erstellt durch Mark Collin alias Ardesco): Selenium-Maven-Template

Möglichkeit 2:IDE
Die ofizielle Anleitung: The 5 Minute Getting Started Guide

Anmerkung: Hier wird ein Beispiel mit HtmlUnitDriver gezeigt. Ich habe oft die Erfahrung gemacht, dass HtmlUnitDriver oft nicht richtig mit Selenium Code funktioniert, deshalb rate ich von der Verwendung ab.

Möglichkeit 3: ohne IDE und ohne Maven
Diese Vorgehensweise ist, in Bezug auf Java sozusagen „Back-to-the-roots“. Allerdings nimmt es auch die meiste Zeit ein.
Ich werde diesen Ansatz in diesem Artikel zeigen.

Einige Hintergrundinformationen zu Java
Dieser Paragraph ist als kleine Auffrischung für dein Java Wissen gedacht.. Wenn du bisher keine Java Kenntnisse hast, würde ich dir empfehlen ein Java Tutorial durchzugehen.
Wenn du bisher kein Java JDK auf deinem Rechner installiert hast, kannst du dieses auf folgender Seiter herunterladen: JDK Download (einfach die aktuellste Java Platform (JDK)). Führe die Installation durch und setze anschließend den Pfad: Beschreibung „Pfad setzen“.

Java JDK enthält nicht nur den JRE (jre.exe – bei JRE handelt es sich um die Ausführungsumgebung für Java Anwendungen), sondern auch den Java Kompiler (javac.exe). Der Kompiler ist notwendig um den Programmiercode (deineanwendung.java) deiner Anwendung in einer ausführbare Datei umzuwandeln (deineanwendung.class). Die kompilierte Anwendung kann anschließend einfach per CMD in dem Ordner ausgeführt werden, in dem „deineanwendung.class“ abgelegt ist.

Firefox
Um den ersten Selenium Test mit Firefox durchzuführen, muss zuerst Firefox geladen und installiert werden: Firefox runterladen

Selenium Installation
Um mit Selenium arbeiten zu können, muss die richtige Selenium Bibliothek hinzugefügt werden. Es gibt einige Bibliotheken in dem Selenium Projekt, was am Anfang etwas verwirren kann: Selenium Download Seite. Die aktuellste Version der „selenium-server-standalone-x.y.z.jar“ Bibliothek ist aber immer eine gute Wahl – diese Bibliothek enthält alles, was du am Anfang zum Arbeiten mit Selenium benötigst.

Lade die Selenium Bibliothek herunter, kopiere diese zum Ordner deiner Wahl, füge Sie zu deinem neuen Java Projekt hinzu, fertig!

Deine erste Selenium Anwendung

Kopiere folgenden Code zu deinem Java Projekt und speichere die Datei als „Example.java“

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Example  {
    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());
    }
}
1 Kommentar
  1. Alexander Weicht
    Alexander Weicht sagte:

    Sehr geehrter Herr Wowro,

    mit reidigem Intersse hab ich Ihren hervorragenden Artikel über
    den Einsatz von Selenium mit Java gelesen. Sie proirisieren hier
    die dritte Variante – Seleium + Java ohne IDE und ohne Maven.

    Dies war genau das, was ich suchte, denn ich programmiere schon
    seit mehr als 20 Jahren Java-Projekte ganz ohne Java-IDE oder
    so einen Prjektmanager.

    Ich managte meine Projekte immer selbst, und ich konnte bisher
    alles realisieren was ich wollte.

    So war ich hochderfrsut über Ihre Sichtweise auf das Thema Se-
    lenium, lud als erstes die Datei selenium-server-standalone-3.5.3.jar
    herunter und kopierte sie in mein Arbeitsverzeichnis, wo alle
    eine Java-‚Projekte‘ liegen.

    Dann kopierte ich die Datei Example.java in mein Java-Arbeits-
    verzeichnis. Ich entfernte alle Kommentare, um es noch über-
    sichtlicher zu machen.

    Sie sieht jetzt so aus:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;

    public class standaloneExample2{

    public static void main(String[] args){
    WebDriver driver = new FirefoxDriver();
    driver.get(„http://www.google.com“);

    WebElement element = driver.findElement(By.name(„q“));
    element.sendKeys(„Cheese!“);
    element.submit();

    System.out.println(„Page title is: “ + driver.getTitle());
    }//main

    }//class

    (Sorry, das ist nicht der der übliche Java-Stil, aber ich hasse nun mal
    vereinzelt herumstehende Klammern. Besonders am Ende braucche ich einfach
    mehr Übersicht, welche schließende Klammer zu welcher öffnenden gehört,
    ohne Abzählerei.)

    Ich konnte die Datei ohne Probleme kompilieren, d.h. vor allem, die Importe funktioneren.

    Als ich sie jedoch laufen ließ, wurde mir nach einiger Wartezeit (der timeout!)
    folgende Meldung entgegengeschleudert:

    Exception in thread „main“ org.openqa.selenium.WebDriverException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:10166 [localhost/127.0.0.1, localh
    st/0:0:0:0:0:0:0:1] failed: Connection refused: getsockopt
    Build info: version: ‚3.5.3‘, revision: ‚a88d25fe6b‘, time: ‚2017-08-29T12:54:15.039Z‘
    System info: host: ‚PC‘, ip: ‚192.168.178.114‘, os.name: ‚Windows 7‘, os.arch: ‚amd64‘, os.version: ‚6.1‘, java.version: ‚21.0.6‘
    Driver info: driver.version: FirefoxDriver
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:91)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:646)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:255)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:237)
    at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:138)
    at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:191)
    at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:103)
    at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:99)
    at standaloneExample2.main(standaloneExample2.java:9)
    Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:10166 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: getsock
    pt
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:159)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:359)
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
    at org.openqa.selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.java:139)
    at org.openqa.selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.java:87)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:337)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:136)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
    … 8 more
    Caused by: java.net.ConnectException: Connection refused: getsockopt
    at java.base/sun.nio.ch.Net.pollConnect(Native Method)
    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:751)
    at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
    … 23 more

    Ich weiß nicht, was ich hier falsch sein könnte. In Ihrem Blog habe ich keine entsprechenden
    Anweisungen gefunden.

    Mit herzlichen Grüßen,
    Dipl.-Ing. TU Alexander Weicht

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert