2017-12-18 3 views
0

Ich habe gesucht und gesucht und kann keine Antwort finden. Ich verwende Java-Properties-Dateien für meine Testdaten. Ich brauche eine Möglichkeit, die Datei .properties zu durchlaufen und eine Karte nur bestimmter Schlüssel zu erstellen. Die Struktur des Abschnitts der .properties-Datei ich will, ist:Laden einer Karte aus einer Datei java.properties mit bestimmten Schlüsseln

emulator.Android.driver.URL = https://emulator.com:443/wd/hub 
emulator.Android.driver.appiumVersion = 1.7.1 
emulator.Android.driver.deviceOrientation = portrait 
emulator.Android.driver.browserName = "" 
emulator.Android.driver.app = myApp.apk 
emulator.Android.driver.platformName = Android 
emulator.Android.driver.platformVersion = 6.0 
emulator.Android.driver.name = sSuiteName 
emulator.Android.driver.deviceName = Android Emulator 
emulator.Android.driver.appPackage=com.app.android.debug 
emulator.Android.driver.appActivity=com.app.android.LaunchActivity 
emulator.iOS.driver.URL = https://emulator.com:443/wd/hub 
emulator.iOS.driver.appiumVersion = 1.7.1 
emulator.iOS.driver.deviceOrientation = portrait 
emulator.iOS.driver.browserName = "" 
emulator.iOS.driver.app = myApp.zip 
emulator.iOS.driver.platformName = iOS 
emulator.iOS.driver.platformVersion = 10.2 
emulator.iOS.driver.deviceName = iPhone Simulator 
emulator.iOS.driver.bundleId=com.qa 
live.Android.driver.URL = https://live.com/wd/hub 
live.Android.driver.apiKey = myKey 
live.Android.driver.appiumVersion = 1.7.1 
live.Android.driver.deviceOrientation = portrait 
live.Android.driver.browserName = "" 
live.Android.driver.app = myApp.apk 
live.Android.driver.platformName = Android 
live.Android.driver.platformVersion = 6.0 
live.Android.driver.appPackage=com.app.android.debug 
live.Android.driver.appActivity=com.app.android.LaunchActivity 
live.iOS.driver.URL = https://live.com/wd/hub 
live.iOS.driver.apiKey = myKey 
live.iOS.driver.appiumVersion = 1.7.1 
live.iOS.driver.deviceOrientation = portrait 
live.iOS.driver.browserName = "" 
live.iOS.driver.app = myApp.zip 
live.iOS.driver.platformName = iOS 
live.iOS.driver.platformVersion = 10.2 
live.iOS.driver.name = sSuiteName 
live.iOS.driver.bundleId=com.qa 

HINWEIS: Es gibt noch andere Eigenschaften in dieser Datei, aber ich will nur das oben. Mein Ziel ist es, alle Eigenschaften wie emulator.Android.driver zu extrahieren. * Entfernen Sie den Emulator.Android.driver. und mit einer Karte enden. Angenommen, ich möchte die Eigenschaften für den unter iOS ausgeführten Emulator extrahieren. Ich würde mit einer Karte aufzuwickeln, die enthalten würde:

URL = https://emulator.com:443/wd/hub 
appiumVersion = 1.7.1 
deviceOrientation = portrait 
browserName = "" 
app = myApp.zip 
platformName = iOS 
platformVersion = 10.2 
deviceName = iPhone Simulator 
bundleId=com.qa 

Nächster Lauf ich mit Android Live wählen könnte und sollte mit der Karte aufzuwickeln enthält:

URL = https://live.com/wd/hub 
apiKey = myKey 
appiumVersion = 1.7.1 
deviceOrientation = portrait 
browserName = "" 
app = myApp.apk 
platformName = Android 
platformVersion = 6.0 
appPackage=com.app.android.debug 
appActivity=com.app.android.LaunchActivity 

Kann jemand mich in die richtige Richtung ?

+1

Was haben Sie bisher versucht? – Mureinik

+0

Siehe https://stackoverflow.com/questions/17209260/converting-java-util-properties-to-hashmapstring-string –

+0

Zwei mögliche Ansätze. (1) Laden Sie zuerst alle Eigenschaften, dann durchlaufen Sie die resultierende Map und kopieren Sie die benötigten Eigenschaften in eine neue Map. (2) Schreiben Sie eine Wrapper-Klasse, die 'Map' implementiert, speichert alle Eigenschaften, fügt aber' emulator.Android.driver' hinzu, wenn die Suche durchgeführt wird. –

Antwort

0

Haben es herausgefunden. Hier ist der resultierende Code.

sSearchString = "emulator.Android.driver."; 
    mDriverProperties = new HashMap<String, String>(); 
    Set<String> sKeys = pTestProperties.stringPropertyNames(); 
    for (String sKey : sKeys) 
    { 
     if (sKey.startsWith(sSearchString)) 
     { 
      sKey = sKey.substring(sKey.lastIndexOf(".") + 1); 
      mDriverProperties.put(sKey, pTestProperties.getProperty(sSearchString + sKey)); 
     } 
    } 
Verwandte Themen