2016-07-20 16 views
0

Ich schreibe automatische Tests mit Java mit Selenium Grid und JUnit Framework und ich habe ein Problem mit Benutzereingaben festgestellt. So sieht mein Code wie folgt aus:Selen Gitter mit Java - Benutzereingabe

package com.example.tests; 

import com.thoughtworks.selenium.DefaultSelenium; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 

import java.util.Scanner; 

import static org.junit.Assert.fail; 
import static org.testng.Assert.assertEquals; 
import static org.testng.Assert.assertTrue; 


public class test { 
    private DefaultSelenium selenium; 

    @Before 
    public void setUp() throws Exception { 
     selenium = new DefaultSelenium("localhost", 5555, "*googlechrome", "www.google.com"); 
     selenium.start(); 
    } 

    @Test 
    public void Test() throws Exception { 
    // some tests here 
    } 

    @After 
    public void tearDown() throws Exception { 
     selenium.stop(); 
    } 

Ich möchte eine Benutzereingabe hinzufügen, so dass, wenn Benutzertypen zum Beispiel „Google Chrome“, der Test mit Google Chrome starten, wenn er Typen „Firefox“, der Test mit Firefox starten usw. ich habe versucht

Scanner in = new Scanner(System.in); 
String web_browser = in.next(); 

somwhere in meinem Code zu setzen (in setUp Verfahren zum Beispiel), aber wenn das Programm gestartet wird, kann ich nicht alles in der Konsole eingeben. Kennt jemand die Lösung dafür?

+0

Warum genau einstellen würden Sie einen automatisierten Test möchten, die manuell gesteuert werden muss? Wenn Sie nur bestimmte Aufgaben automatisieren möchten, sollten Sie keinen Komponententest durchführen. Erstellen Sie einfach ein POJO, das die von Ihnen benötigten Aufgaben ausführt, und geben Sie Parameter basierend auf den Aufgaben an, die Sie ausführen möchten. – t0mppa

+0

@ t0mppa Ja, aber ich möchte den gleichen Test parallel mit verschiedenen Browsern laufen –

+0

Ich denke immer noch, dass manuelle Arbeit in der Mitte ist der falsche Weg zu gehen, da wir über automatisierte Tests sprechen. Sie könnten Ihre Testsuite einfach mehrere Browser starten lassen, ohne dass Sie in irgendeiner Weise persönlich damit interagieren müssen. – t0mppa

Antwort

0

Es ist schwierig, im Test mit System.in umzugehen.

Ich schlage vor, dass Sie lieber Ihre Treibereinstellungen als Systemeigenschaft lesen?

String driver = System.getProperty("driver"); 
if (driver != null) { 
    //use that driver 
} 
else { 
    //use default driver 
} 

können Sie den Start Ihrer Test wie

mvn test -Ddriver=chrome 

oder von ihnen in Ihrem IDE