Archiv der Kategorie: Ranorex

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

Adapter/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 drüfte.

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.

Gelöst: Ranorex Firefox Plugin Update nicht möglich

Aus irgendwelchen mysteriösen Gründen scheitert bei mir der Ranorex Instrumentation Wizard von Zeit zu Zeit die Firefox Extension Ranorex Automation upzudaten.
Update von v1.0.39 auf v1.0.40 (Ranorex v8.0.0)
Gelöst durch manuelles Installieren aus C:\Program Files (x86)\Ranorex 8.0\Ranorex Firefox Extension
Update von v1.0.3 auf v1.0.9 (Ranorex v6.1.1.)
Ein Direkt-Download und -install aus dem Firefox heraus tut da manuell&schnell Abhilfe: http://ranorex.com/firefox-extension-1.0.9.xpi

Testautomatisierung von CSS content

Die CSS-Eigenschaft content erzeugt Inhalte im Browser, die nicht gerendert werden und keine Auswirkungen auf’s DOM haben. Wird im Zusammenhang mit den Pseudo-Elementen ::before und ::after benutzt. Hier ein sehr gut erläuterndes Beispiel. Hier ein Live-Beispiel.
Das DOM schaut im Chrome dann so aus – ::before gibt einen Hinweis darauf, dass an dieser Stelle von der content-Eigenschaft Gebrauch gemacht wird:

Und im Internet Explorer sieht das dann so aus:

 

Selektierung in Selenium

generisch nicht möglich, daher Workaround via JavaScript: http://stackoverflow.com/a/28265738
 

Selektierung in Ranorex

Mittels „ExecuteScript“ kann auch CSS Content einer Website ausgelesen werden.
Sample Page:
https://codepen.io/anon/pen/gWYVZE
Rx User Code:

IFrameTag fr = "/dom[@domain='codepen.io']//iframe[@id~'iFrameKey-.*']";
var script = "return window.getComputedStyle(document.getElementById(\'test\'),':before').getPropertyValue('content')";
var cssContent = fr.ExecuteScript(script);