Find.By - Finden und Überprüfen von Locators

Ich werde diesen Artikel mit der Tatsache beginnen, dass ich bei QA Automationg arbeite und gerne alle Routineaktivitäten automatisiere. Das Schreiben, Bearbeiten und Überprüfen von Locators für Elemente auf einer Seite ist für mich in letzter Zeit zu einer solchen Aufgabe geworden.

Normalerweise sieht dieser Vorgang so aus: Ich schreibe einen xpath-Ausdruck in Chrome oder Firepath, kopiere ihn dann und füge das Attribut dem Element in C # -Code hinzu. Locators müssen jedoch häufig repariert werden oder nur überprüfen, auf welches Element sie zeigen. Und selbst eine so einfache Änderung im Prädikat wie [@ id = 'myId'] zu [ includes (@id = 'Id')]endet damit, dass der Test zur Laufzeit abstürzt, weil ich '=' anstelle von '' geschrieben habe und zu faul war, um die Änderungen zu überprüfen. Im Allgemeinen gibt es zu viele Aktionen beim Kopieren, Einfügen, Wechseln zwischen Fenstern und dergleichen für eine so einfache Aufgabe. Ich habe beschlossen, ein Plugin für ReSharper zu schreiben, das mein Element im Browser mit Alt + Enter hervorhebt.

Erklärung des Problems


Schreiben Sie Plugins für ReSharper und Chrome, die zusammen zwei einfache Aufgaben lösen würden:
  • Static Analyzer XPath-Ausdrücke;
  • Markieren Sie einen Selen-Locator im Browser mit Alt + Enter.

Lösung


Bei der ersten Aufgabe stellte sich heraus, dass alles ganz einfach war. Ich habe beschlossen, meinen Parser und Validator nicht für xpath zu schreiben, sondern einfach die XmlDocument-Klasse aus der .NET-Bibliothek zu verwenden:

XmlDocument document = new XmlDocument();
var navigator = document.CreateNavigator();
try
{
    navigator.Compile("xpath expression");
     //Если не получили исключение, то выражение валидно
}
catch (XPathException exception)
{
    //Выражение не валидно
}

Der zweite Teil der Frage wurde wie folgt umgesetzt:
  • Das ReSharper-Plugin ruft TcpServer für localhost auf
  • Das Chrome-Plugin fragt ihn ständig: "Gibt es etwas zu markieren?"
  • Die Liste der Hervorhebungen bleibt leer, bis der Benutzer Alt + Eingabetaste drückt und das Hervorhebungselement auswählt

Um mit XPath in dom nach Elementen zu suchen, verwende ich die Bibliothek jquery.xpath.js .

Da ich noch nie Plugins für Chrome geschrieben hatte, war es für mich am schwierigsten, Anfragen von der https-Site an http localhost zu senden. Google Chrome blockiert alle derartigen Anfragen von der Webseite. Ich brauchte kurze Zeit, um eine Lösung zu finden, aber es stellte sich als sehr einfach und wahrscheinlich sogar logisch heraus: Sie können http-Anforderungen aus background.js erstellen und das Ergebnis dann auf die von mir erstellte Seite übertragen.

Plugin-Betrieb in Aktion




Referenzen


Wir schreiben das einfachste Plugin für ReSharper - ein Artikel, der dazu beigetragen hat, ReSharper
Find.By Chrome zu
schreiben - ein Plugin für Google Chrome Find.By Resharper - ein Plugin für das Projekt-Repository ReSharper
Find.By - Github

Jetzt auch beliebt: