2012-07-05 6 views
6

Ich muss mit Selenium-Chrom-Treiber in Java testen. Aber Chromfenster sollte nicht geöffnet werden. Angenommen, ein Produkt und kein Fenster sollte geöffnet werden.Testen mit einem Selenium-Treiber in Java, ohne einen Browser zu öffnen

Ich habe mir auch dieses angesehen; Is it possible to hide the browser in Selenium RC? Aber keine Lösung für mich. Der Test sollte Betriebssystem-unabhängig sein und ich habe HtmlUnitDriver zum Testen ausprobiert, ohne ein Fenster zu öffnen, aber es hat ein Problem. Wenn Komponenten nach ID gefunden werden, kann die Komponente möglicherweise nicht anhand der ID gefunden werden. Einige Server senden die Komponenten-ID gemäß dem Browser und ich kann nicht wissen, welche ID ich zum Testen verwenden soll.

Deshalb versuche ich, Chrome-Treiber zu verwenden.

Gibt es eine Möglichkeit, Chrom-Treiber zu verwenden, ohne Chrome-Fenster zu öffnen oder eine andere Möglichkeit zu testen, ohne ein Fenster mit Selenium in Java zu öffnen?

Vielen Dank!

+0

einsetzen Als ich Selen glauben, dass die DOM-Engine des Browsers verwendet, ich glaube nicht, dass ein Browser-spezifischen Fahrerfenster versteckt möglich ist. – Avery

+0

Die akzeptierte Antwort in der verknüpften Frage listet alle Möglichkeiten auf, die ich kenne. Versuchen Sie, HtmlUnitDriver eine weitere Chance zu geben - aber [stellen Sie sicher, dass die JavaScript-Unterstützung aktiviert ist] (http://code.google.com/p/selenium/wiki/HtmlUnitDriver).Wenn Sie speziell Chrome möchten, müssen Sie mit Socelabs, Linux und Headless-Treiber oder dem erwähnten Remote-Aufruf an einen anderen Computer gehen, auf dem der Test ausgeführt wird. –

Antwort

6

Gehen Sie mit PhantomJS, aber wenn sie in chromedriver ausgeführt wird und Sie die Ressourcen haben, hat dieser Blog ein gutes Rezept auf running headless selenium with chrome. Die Sie auffordert, die folgende herunterladen ...

  • VirtualBox
  • Vagrant
  • NodeJS

Wenn Sie Jenkins oder andere CI in der Zukunft umzusetzen, empfehle ich mit PhantomJS gehen obwohl.

0

Ich mag dies article.

Grundsätzlich müssen Sie PhantomJS Abhängigkeit in pom (Ich mag Maven für Abhängigkeitsmanagement) hinzuzufügen:

<dependency> 
    <groupId>com.github.detro.ghostdriver</groupId> 
    <artifactId>phantomjsdriver</artifactId> 
    <version>1.1.0</version> 
</dependency> 

und Ausführen von Code

System.setProperty("phantomjs.binary.path", "c:\\path\\to\\phantomjs-1.9.8-windows\\phantomjs.exe"); 
    WebDriver driver = new PhantomJSDriver(); 
    driver.get("http://www.google.com"); 
    driver.quit(); 

Er arbeitete für mich mit Versionen:

  • PhantomJS 1.9.8
  • PhantomJS-Treiber 1.1.0
  • Selen 2.44.0
0

In Selen Web-Treiber gibt es kopflos Modus. So können Sie im Headless-Modus die Automatisierung durchführen, ohne den Webbrowser zu öffnen. und auch können Sie Ihre Anwendung in keiner gui System

ChromeOptions options = new ChromeOptions(); 
    // setting headless mode to true.. so there isn't any ui 
    options.setHeadless(true); 

    // Create a new instance of the Chrome driver 
    WebDriver driver = new ChromeDriver(options); 
+1

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-results) wirklich, um die Qualität Ihres zu verbessern Post. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. –