Archiv der Kategorie: Ranorex

RanoreXPath versus XPath

Eintrag in der Waybackmachine

Die erste Achse des RanorexPath’s beginnt mit /forms oder /dom, was es bei XPath’s nicht gibt.

Zusätzlich verfügen Repository-Items in Ranorex über zusammengesetzte Pfade mittels Container, die App Folder oder Rooted Folder heißen und einen Teilpfad enthalten, den sogenannten Base Path (Quelle: https://www.youtube.com/watch?v=qYYEDzw1fuU&t=179s). So etwas gibt es in Selenium nicht.

XPath nutzt contains(), RanorexPath kennt kein contains() und nutzt stattdessen Regex (Quelle)

Im RanoreXPath kann man @id= abkürzen – ein RanorexPath kann also so aussehen: //div[#’mySearch’]

In XPath wird das letze Element mit last() angesprochen, in RanorexPath wird das durch [-1] erreicht. (darüberhinausgehende Quelle der Unterschiede zwischen RanorexPath und XPath)

Verneinung eines Attributes geht in XPath via not(@type=’hidden’) in RanorexPath hingegen gibt’s kein not(), dort macht man das so: @type!~’hidden’

In XPath kann man die Existenz eines Attributs einfach durch @title überprüfen (Quelle), in RanoreXPath muss man das so machen: @title!=null() -> die Klammern hinter null braucht es tatsächlich.

In XPath kann man die Nicht-Existenz eines Attributes einfach durch not(@title) überprüfen, z.B. //div[not(@class)]. In RanoreXPath ist das ziemlich uneinheitlich (im Ranorex-Forum bestätigt der Support zu mindest, dass das einmal zwischen verschiedenen Browsern uneinheitlich war (Quelle)). In Edge habe ich mir zu Fuss einmal selbst ein Bild gemacht, welcher RanoreXPath das wie macht:

AttributRanoreXPath zum Selektieren eines Elements ohne das Attribut
Zugelassene Attribute eines divs (Quelle)
id@id=null()
class@class=null()
lang@lang=null()
title@title=null()
stylekeinen RanoreXPath gefunden, der das kann.
align@align=null()
onclick@onclick=null()
Phantasie-Attribute
hubba-bubba@hubba-bubba=null()
Web-Element Attribute
tagValue@tagValue=null()
innertext@innertext=”
ContentEditable@ContentEditable=null()
ContextMenue@ContextMenue=null()

Ranorex: Alles zu Screenshots erstellen

Screenshot erstellen

Man braucht kein Ranorex, um in seinem Testfall zwischendurch ein Screenshot zu schießen und zu speichern.
Folgenden Snippet habe ich bereits erfolgreich in einen Ranorex-Testfall eingebaut: https://stackoverflow.com/a/363008/1777526

Ansonsten: Save time with Ranorex 6.0 | Ranorex Blog

Screenshots in separaten Ordner speichern

Das geht nur mit Programmieren (Quelle)

Ranorex Report: In welchem Augenblick werden Screenshots geschossen?

Kann man in den TestSuite-Properties einstellen:

Ranorex Entitäten: Adapter/Role, Element und RepoItem & RepoItemInfo

Adapter versus Role

Ranorex scheint adapter in role umbenannt zu haben. Jedenfalls wird Form in dieser offiziellen pdf-docu (V10.1) noch als  primary adapter bezeichnet und in dieser offiziellen html-docu (Stand 17.8.2022) als role.

Der Adapter ist eine zentrale Entität in Ranorex und zählt zahlreiche Properties – die Auswahl der wichtigsten:

  • Screenrectangle (Advanced -> Layout) beschreibt X- und Y-Position (ausgehend von der linken oberen Monitorecke) sowie Breite und Höhe. Exakt diese Daten in genau dieser Reihenfolge werden auch optisch unter dem Titel herausgehoben:

  • Flavorname (Advanced -> General) gibt einen Hinweis auf das dahinterliegende Gebilde. Werte von Elementen einer Desktop-Anwendung sind bsps.weise msaa, winforms, win32, chromeweb
  • Location (Advanced -> Dynamic) gibt die X- und Y-Position (ausgehend von der linken oberen Ecke des Parent-Elements) an. (Achtung: Es gibt in Ranorex auch irritierenderweise eine Klasse Ranorex.Location, deren x- und y-Werte jedoch die Distanz zur oberen linken Ecke des Elements selbst darstellt.)

MyRepoObject.Element.Location.X

Element

Dieser Post fasst die aktuellen(?) Unklarheiten gut zusammen.

Hier ein Post, der das Verhältnis von Element und Adapter skizzieren dürfte.

RepoItem & RepoItemInfo

RepoItem: am 17.8.2022 habe ich bei einem <i>-Element die Beobachtung gemacht, dass Ranorex, wenn es mit dem entsprechenden RanoreXPath eigentlich mehrere <i>-Elemente auf der Webseite selektieren würde, es nur das erste nahm.

RepoItemInfo: What’s a RepoItemInfo and how do you use it? – Ranorex Forum

Wie komme ich von RepoItemInfo zu Adapter

Wie komme ich von Adapter zu RepoItemInfo

aktuell gar nicht (Quelle)

mit Hilfe von Adapter.GetPath() bekommt man zwar einen RanoreXPath, dieser ist jedoch nicht der ursprünglich vom Testautomatisierer eingegebene, sondern ein “künstlich” generierter:

string RxPath = webElement.Element.GetPath(PathBuildMode.Default);

Rolle/Technology -> Charcteristics/Capabilities -> Attribute

Offizielle Doku wobei ich denke, dass das Schaubild etwas irreführend ist:

Unter dem Role-Kasten sollte der Technology-Kasten stehen und im Capabilities-Kasten entsprechend die Capabilities aufgelistet sein.