2016-06-14 14 views
0

Ich wollte wissen, wie man einen JUnit-Test durchführt, der zwei verschiedene Geräte anvisieren kann?Wie führe ich einen JUnit Test für 2 verschiedene Geräte auf Appium aus?

Ich sehe, Sie können Appium einrichten, um ein Gerät zu targetieren und den Port für diesen Appium-Server zu setzen, aber wie bekommen Sie JUnit, um die 2 verschiedenen Geräte zu testen?

-Setup für Appium auf dem Gerät (32456 und 43364):

node . -p 4492 -bp 2251 -U 32456 

node . -p 4491 -bp 2252 -U 43364 

Dies wird 2 Appium Server mit unterschiedlichen Ports laufen.

In meinem JUnit-Test habe ich das Setup für den AndroidDriver mit dem Port. Wie können Sie 2 verschiedene Geräte mit dem gleichen Junit-Test testen?

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); 

Wir sind nicht in der Lage 2 Sätze Treiber haben im JUnit-Code zu verschiedenen Häfen

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); 

driver2 = new AndroidDriver(new URL("http://127.0.0.1:4724/wd/hub"), cap); 

Das ist nicht möglich, da wir die verschiedenen Geräte-Ports nicht immer wissen können. Wir müssen im Wesentlichen die JUnit-Testarbeit von entweder einem konfigurierbaren Port haben, den wir in den Test übergeben können (nicht sicher, ob dies möglich ist).

Kann ein Wert in den JUnit-Test eingegeben werden? Wir verwenden JUnitCore zum Testen.

driver = new AndroidDriver(new URL("http://127.0.0.1:"+ SOME_PASSED_IN_PORT + "/wd/hub"), cap); 
+0

Verwendung Selen Gitter –

Antwort

0

Erstellen mehrerer Fahrer eine der Lösung sein

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); 

äquivalent zu

driver = new AndroidDriver(new URL("http://127.0.0.1:" + "4723" + /wd/hub"), cap); 

So kann man in einer naiven Art und Weise erstellen und zwei verschiedene Treiber verwenden gleichzeitig als -

String port1 = "4491"; //assuming this being the port number 
String port2 = "4492"; 
driver1 = new AndroidDriver(new URL("http://127.0.0.1:" + port1 + "/wd/hub"), cap); 
driver2 = new AndroidDriver(new URL("http://127.0.0.1:" + port2 + "/wd/hub"), cap); //also the cap could differ in both the cases 

Hinweis: Je nach Anforderung können Sie dem Treiber verschiedene/ähnliche Funktionen bereitstellen. Auch dies ist eine sehr naive Methode, um parallele Ausführung zu tun, versuchen und suchen Lösung unter Verwendung Selenium-Grid für die gleiche, um einen effizienten Ansatz zu erhalten.

+0

Ja ich versucht hatte, dass aber ich hätte angeben sollen, dass dies nicht möglich ist, da wir die verschiedenen Geräteports möglicherweise nicht immer kennen. Wir müssen im Wesentlichen die JUnit-Testarbeit von entweder einem konfigurierbaren Port haben, den wir in den Test übergeben können (nicht sicher, ob dies möglich ist). Vielleicht müssen wir einen anderen Server treffen, der die Appium-Instanz steuert. Ich werde die Frage aktualisieren. – ALM

0

Verwendung Selenium Grid

Selen-Grid ermöglicht es Ihnen, Ihre Tests auf verschiedenen Geräten parallel laufen. Das heißt, mehrere Tests gleichzeitig auf verschiedenen Geräten auszuführen. Im Wesentlichen unterstützt Selenium-Grid die verteilte Testausführung. Es ermöglicht die Ausführung Ihrer Tests in einer verteilten Testausführungsumgebung.

+0

Können Sie mit Selenium Grid einen Junit-Test durchführen und ihn für verschiedene Geräte ausführen? Wie richtet es die Möglichkeiten innerhalb des etst für Appium ein, das Treiber = neuen AndroidDriver (neue URL ("http://127.0.0.1:4723/wd/hub") hat, Kappe); – ALM

0

einfache Art und Weise ist, dass Sie zwei appium Server mit unterschiedlichen Ports starten und die Port-Nummern im Skript aktualisieren, aber u müssen den Code replizieren, ist andere Lösung Selen Gitter verwenden

+0

2 verschiedene Ports ist keine Option wie in der Frage angegeben. – ALM