,

Selenium MouseOver Event erzeugen

Um auf dynamische Untermenüs zugreifen zu können, ist es oft Notwendig ein „MouseOver-Event“ auf ein bestimmtest Element zu erzeugen. Alles andere führt bei Selenium zu der „Element is not currently visible and so may not be interacted with“ – Exception.

Wenn auch das Eltern-Element mit einer Seite im Hintergrund belegt ist, kann der Zugriff auf das Untermenü, nicht mit einem Klick realisiert werden. Es sollte also möglich sein, ein Selenium MouseOver aus dem automatisierten Test zu erzeugen.
Selenium bietet hier die Möglichkeit mit Actions zu arbeiten. Aus dem Driver wird ein Actions Builder erzeugt, dieser kann dann eine Selenium MoveToElement Methode auf das gewünschte Webelement ausführen.

Weiterlesen

,

Selenium Version 2.33.0 verfügbar

Die neue  Selenium WebDriver C# Assembly (Version 2.33.0) steht zur Verfügung.
Diese kann wie gewohnt von der Seite seleniumhq geladen werden:
http://docs.seleniumhq.org/download/

Die Änderungen in dieser Version sind:

 * Supports native events for Firefox versions 21 (current), 20 (immediately
   previous), 17 (current ESR), and 10 (immediately previous ESR)
 * Issue #5549: Modified to use indexer for putting entry in .NET Firefox
   Profile preferences Dictionary. Was previously using the .Add() method of
   the Dictionary, which would throw an exception if the key already existed.
 * Updated InternetExplorerDriverService to allow using new command line
   options for IEDriverServer.exe
(Auszug aus Selenium Changelog)
,

Ranorex: Problem beim dynamischen Zugriff auf eine Webtabelle

Bei der Automatisierung einer Web-Applikation mit Ranorex, bin ich vor kurzem auf folgendes Problem gestoßen:

Die Tabelle besteht aus ca 10 Zeilen und 2 Header Zeilen.
Um einen flexibelen Zugriff zu ermöglichen, setze ich mir den Ranorex Pfad (Ranorex XPath) selbst zusammen.
Der Zugriff sollte in diesem Fall über „Zeilen / Spalten – Nummer“ aus Sicht der Tabellenebene stattfinden.
Das Element setzte sich so zusammen:

element = tablepath + "//tr[" + row + "]/td[" + column + "]";

Alles soweit in Ordnung. Variablen row = 1 und column = 3 gesetzt, Ranorex Pfad wird richtig gefüllt und die td Zelle lässt sich, mit dem generierten Pfad, durch Ranorex Spy finden.

Der Versuch dieses Element per Methode TryFindSingle() während der Testdurchführung zu finden, ist aber gescheitert.

Host.Local.TryFindSingle(element, TimeSpan.FromSeconds(time), out tdElement))

Nach einer kurzen Try/Fail-Phase, habe ich versucht die Zelle über den Ranorex Typ „WebElement“ zu finden.
Dazu wird einfach das letzte Element (td) durch ein * ersetzt und mit TryFindSingle nach Typ „WebElement“ gesucht.
Dadurch kann jedes Element identifiziert werden, das den Suchkriterien entspricht. Als Result kam Tag TH (Head Element) raus.
Also row = 3 (von der Anzahl höher als das letzte TH Element) gesetzt, schon hat der Zugriff über TryFindSingle() funktioniert.
Reicht als Lösung des Problems natürlich nicht aus, die ersten beiden Zeilen sollen schließlich auch angesprochen werden können. Da kommt das Element tbody ins Spiel.
Durch tbody kann hier sichergestellt werden, dass der Zugriff wirklich auf den „Content“ der Tabelle stattfindet. Die Identifikation ist so eindeutig.
Also den Ranorex XPath Ausdruck angepasst, schon funktioniert die TryFindSingle() Suche fehlerfrei:

element = tablepath + "//tbody/tr[" + row + "]/td[" + column + "]";

Man könnte annehmen, dass //tr[1]/td[1] Kombination ausreichend wäre, dem war hier leider nicht so.
Warum dieser Pfad in Ranorex Spy richtig erkannt wird und per TryFindSingle() nicht, kann ich leider nicht sagen, aber durch diesen kleinen „Workaround“ kann an dieser Stelle weitergearbeitet werden.

Im Ranorex Forum gibt es ein ähnliches Problem: Beitrag im Ranorex Forum
Die dort vorgeschlagenen Lösungen, haben bei diesem Problem aber keine Besserung gebracht.