# Selenium



## quivadis (28. Mrz 2011)

Hallo Freunde,

in meinem Projekt benutze ich Selenium zum Testen vom Webseiten.
Ich habe mehrere Testfälle geschrieben. Um die die Testfälle zu starten muss ja immer vorher manuell der Selenium-RC Server gestartet werden. Die Testfälle laufen in Junit 4.4 und das ganze ist ein Maven 2 Projekt. Als Brwowser kommt Firefox 3.6.15 unter Ubuntu zum Einsatz.

Nun zum Problem:
Ich möchte den Selenium-RC Server automatisch starten lassen. Nun gibt es ja in Selenium verschiedene Teilprojekte, in jeweils unterschiedlichen Versionen. 
In Java habe ich mir eine Klasse geschrieben, welche den Selenium-RC Server startet und auch wieder beendet. Der eigentliche Junit-Test wird aber nicht gestartet, sondern bricht immer mit folgendender Fehlermeldung ab:
[Java] java.lang.NullPointerException
	...
	...
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:212)
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:130)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:97)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115)
[/Java]     

Der Browser wird geöffnet, aber dann geht es nicht weiter.
Ich habe mich dem Problem schon soweit genähert, das ich denke das es ein Versionskonflikt von Selenium ist, weil es spielt keine Rolle wie ich den Server starte.
Maven:

```
<!-- SELENIUM -->
        <dependency>
            <groupId>org.seleniumhq.selenium.client-drivers</groupId>
            <artifactId>selenium-java-client-driver</artifactId>
            <version>1.0.2</version>

        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>2.0b2</version>

        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium.server</groupId>
            <artifactId>selenium-server-coreless</artifactId>
            <version>1.0.3</version>

        </dependency>
      <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-client</artifactId>
            <version>2.0b1</version>

        </dependency>
```

Weiß jemand von euch eine Lösung des Problems? Oder ein Repository für Maven, wo die neuesten Seleniumversionen drin sind?

Grüße Quivadis


----------



## quivadis (29. Mrz 2011)

Hallo,

kann mir wirklich keiner sagen, wie ich Selenium unter Ubuntu 10.04(lucid) LTS mit Firefox 3.6.15, Junit 4.8.x und maven 2 zum laufen bekomme?

Er startet den Selenium-Server und auch Firfox wird gestartet, aber dann passiert nix mehr und ich bekomme die oben geschreibene Fehlermeldung.

Ich benutze jetzt schon selenium 2.0b3.   

Quivadis


----------



## urlauber (29. Mrz 2011)

Selenium Maven Plugin - Introduction


----------



## fastjack (29. Mrz 2011)

Kannst Du sicherstellen, daß Dein selenium nicht null ist? Vielleicht wird es nicht richtig initialisiert (new DefaultSelenium...). Hast Du hier den richtigen Browser eingestellt (*firefox) ?


----------



## quivadis (29. Mrz 2011)

ich sage mal ja. Die tests liefen ja schon mal, dann kam eine neue Version von Firefox, danach lief nichts mehr. Dann bin ich auf die neuesten Versionen von Selenium umgestiegen. Aber, leider auch ohne Erfolg. 

[Java] Selenium selenium  = new DefaultSelenium("localhost", 4444, "*chrome", "http://psrv-arwini:8080/arwinivv/");

        selenium.start();[/code]


----------



## fastjack (29. Mrz 2011)

Hast Du statt *chrome mal *firefox probiert?


----------



## quivadis (29. Mrz 2011)

ja, habe ich an der Fehlermeldung ändert sich nichts. *chrome startet ja nicht chrome, sondern firefox in einem anderen Modus, wo irgendwelche Sicherheitseinstellung für javascript anders sind.  Mit *opera habe ich es auch schon probiert, selbe effekt.


----------



## fastjack (29. Mrz 2011)

ich denke eine setUp-Methode, ohne localhost reicht unter Ubuntu:


```
public void setUp() throws Exception {
    selenium = new DefaultSelenium( "10.0.0.1", 4444, "*firefox", "http://... ); // oder 127.0.0.1
    selenium.start();
}
```


----------



## diel2001 (29. Mrz 2011)

Es gibt in dem Serverpaket eine Datei, in der die unterstützten versionen stehen


----------



## quivadis (29. Mrz 2011)

Ja, reicht auch, dann musst du aber immer noch von Hand den selenium-rc/server starten. 

Bei mir läuft alles auf der selben Maschine, deswegen sollte es mit Localhost gehen. 

Der eigentliche Fehler bleibt der selbe. Wenn ich in der Konsole den Server manuell starte, sehe ich das er eine Verbindung mit meiner Testklasse aufbaut.


```
11:39:47.217 INFO - Command request: getNewBrowserSession[*chrome, [url]http://psrv-arwini:8080/arwinivv/[/url], ] on session null
11:39:47.226 INFO - creating new remote session
11:39:47.382 INFO - Allocated session f772083c40904c17afb03fa044a32303 for [url]http://psrv-arwini:8080/arwinivv/[/url], launching...
11:39:47.432 INFO - Preparing Firefox profile...
11:39:50.987 INFO - Launching Firefox...

java.lang.NullPointerException
```


der Fehler passiert an der ersten Stelle bei 
	
	
	
	





```
Selenium.
```
 obwohl ich das für die gesammte Klasse definiert habe  

```
Selenium selenium;
```


----------



## fastjack (29. Mrz 2011)

> deswegen sollte es mit Localhost gehen



es gibt aber einen Bug bei Ubuntu, darum kannst Du das mal probieren.



> Selenium selenium;



das reicht nicht, probier mal meine setUp-Methode aus.


----------



## quivadis (29. Mrz 2011)

Ich habe es jetzt hin bekommen, das läuft. Leider kann ich nicht richtig nachvollziehen warum es jetzt plötzlich funktioniert. 

Ich habe am Quelltext  ja nix geändert, sondern nur an der pom.xml, die Versionen von Selenium angepasst.
pom.xml(Ausschnitt):

```
<!-- SELENIUM -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>2.0b3</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-firefox-driver</artifactId>
            <version>2.0b3</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-client</artifactId>
            <version>2.0b1</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-control</artifactId>
            <version>2.0b3</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-support</artifactId>
            <version>2.0b3</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium.server</groupId>
            <artifactId>selenium-server-coreless</artifactId>
            <version>1.0.3</version>
       </dependency>
```

Vielleicht liegt es ja an Maven das er, obwohl ich immer gewartet habe bis die Indizierung  fertig war, das es jetzt geht.


----------

