Android-App per Ranorex testautomatisieren

Um Deine Android App mit Ranorex zu testautomatisieren, muss sie als apk-Datei vorliegen. Als Beispiel für diesen Artikel nehme ich die apk-Datei von HelloCharts und lade sie hier (keine Garantie für die Zuverlässigkeit der Quelle) herunter.
Öffne nun den Ranorex Instrumentation Wizard und wähle Mobile -> Android. Anschließend browse zur apk-Datei und wähle Dein Smartphone als ‚Target Device‘:
2016-10-24 11_13_20-Ranorex Instrumentation Wizard
Nachdem Du ‚Next‘ geklickt hast, deployed der Instrumentation Wizard die App auf Dein Smartphone. Du kannst Sie dort unter dem Menü-Button finden und musst die App öffnen, damit diese vom Ranorex Spy gefunden werden kann. Das oberste sichtbare Element in unserer Hellocharts-App ist der ‚Line Chart‘.
Laut Ranorex Support gibt es aktuell noch keine Möglichkeit ein GUI-Element auf dem Smartphone zu tracken, jedoch einen Workaround dafür: Im Ranorex Spy gibt es im rechten, unteren Bereich einen Screenshot der Applikation. Hier kann man mit der Maus alle Elemente unter einem rotem Rahmen sehen und auswählen. Wenn man auf ein Element im Screenshot klickt, öffnet der Spy automatisch den Baum zu diesem Element.
Wie gewohnt findet sich der RanoreXPath oben im Ranorex Spy:
2016-10-24 11_29_15-Ranorex Spy (32bit) - Live
Folgender C#-Code ist ein automatischer Test für unsere Hellocharts-App (als Referenzen benötigt man Ranorex.Core und Ranorex.Plugin.Mobile):

using Ranorex;
namespace TestcaseForMobileApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // 'USB-23c3caa8' bezeichnet mein bei Ranorex angemeldete Android-Smartphone.
            // 'lecho.lib.hellocharts.samples' kann dem @title-Attribut des RanoreXPaths entnommen werden.
            // falls die App im Smartphone geöffnet ist, braucht man das folgende Statement nicht, denn es öffnet die App:
            Host.Local.RunMobileApp("USB-23c3caa8", "lecho.lib.hellocharts.samples", true);
            Ranorex.AndroidElement lineChart = null;
            // trage als ersten Parameter den RanoreXPath aus dem Ranorex Spy ein
            Host.Local.TryFindSingle("/mobileapp[@title='lecho.lib.hellocharts.samples']/form[@title='MainActivity']/?/?/container[@rid='container']//list[@rid='list']/?/?/text[@caption='Line Chart']", 90000, out lineChart); // 90000 milliseconds to wait for the element.
            lineChart.Touch();
        }
    }
}

Einfacher C# Ranorex-Testcase zum mobilen Website-Testen

Dieser einfache Testcase demonstriert, wie Du mit Ranorex eine Website in einem Browser auf einem Android-Gerät testest.
Voraussetzungen:

  • Dein Android-Smartphone muss bei Ranorex angemeldet sein: Anleitung.
  • Damit das unten genannte Beispiel exakt wie angegeben läuft, muss das Smartphone als ‚USB-23c3caa8‘ angemeldet sein.
using Ranorex;
namespace TestcaseForMobileApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // `USB-23c3caa8` bezeichnet mein bei Ranorex angemeldete Android-Smartphone.
            // `ranorex.RxBrowser` ist die default AUT von Ranorex.
            Host.Local.RunMobileApp("USB-23c3caa8", "ranorex.RxBrowser", true);
            Ranorex.WebDocument webDocument = null;
            Host.Local.TryFindSingle("/mobileapp[@title='ranorex.RxBrowser']//dom", out webDocument);
            webDocument.Element.SetAttributeValue("PageUrl", "http://www.google.de");
            Ranorex.WebElement googleSearchField = null;
            Host.Local.TryFindSingle("/mobileapp[@title='ranorex.RxBrowser']//dom//input[#'lst-ib']", 90000, out googleSearchField); // 90000 milliseconds to wait for the element.
            googleSearchField.Element.SetAttributeValue("value", "Ranorex");
            Ranorex.WebElement googleSearchButton = null;
            Host.Local.TryFindSingle("/mobileapp[@title='ranorex.RxBrowser']//dom//button[@name='btnG']", 90000, out googleSearchButton); // 90000 milliseconds to wait for the element.
            googleSearchButton.Touch();
        }
    }
}

Ranorex: Recorded Testcase in Visual Studio (in C#) ausführen

Nachdem man den Testfall mittels Ranorex Recorder aufgenommen hat (RECORD), kann man diesen darauf auch wieder abspielen (PLAY). Wer den Testfall jedoch als C# Code ausführen möchte, kann das folgendermaßen tun:
In Ranorex Recorder: Export -> Generate C# Code
export record ranorex
Baue in Visual Studio ein neues ‚Console Application‘-Projekt und öffne dessen Ordner im Windows Explorer („Open Folder in File Explorer“). Verschiebe die drei generierten .cs-Dateien in den geöffneten Ordner. Öffne die csproj-Datei in einem Editor und ergänze dort die drei Dateien:

<ItemGroup>
  <Compile Include="Program.cs" />
  <Compile Include="New_Recording.Repository.cs" />
  <Compile Include="New_Recording.UserCode.cs" />
  <Compile Include="New_Recording.cs" />
  <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>

Füge noch die benötigten Ranorex-Referenzen hinzu. Diese sind beispielsweise bei einem aufgenommenen Android-Testfall die Folgenden:
export record ranorex 2
Anschließend noch die Start()-Methode in der Main-Methode ausführen:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            MyTestProject.New_Recording.Start();
        }
    }
}

Das Herzstück des Codes ist zweifelsohne die Run()-Methode, in welcher sich die einzelnen Testschritte befinden:
2016-10-19 13_47_12-ConsoleApplication1 - Microsoft Visual Studio
Nach dem Drücken des Start-Buttons in Visual Studio läuft der Testfall nun automatisch.

Anpacken!