2017-03-22 2 views
0

Ich muss durch ein Menü navigieren und ein Untermenü auswählen.Wählen Sie ein Untermenü mit Robot Framework

Ich bin mit Klick Element XPath wie folgt:

//*[@id="gomenu68e1884541"]//nav/div/ul/li[3]/div/ul/li[2]/a 

Aber es hilft mir nicht, weil die iddynamic ist und ändert sich jedes Mal, wenn ich auf die Anwendung zugreifen

Wie kann ich navigieren a Menü-> Untermenü?

Weitere Informationen hierzu finden Sie unter dem unten genannten Bild.

code html

Kann jemand helfen?

+2

Könnten Sie Ihre HTML-Code der nav posten? – Goralight

+2

> Wie kann ich durch ein Menü> Untermenü navigieren? Verwenden Sie keine dynamischen ID-s, direkte Nachkommenpfade und indizierte Elemente :). I.e. Nimm dir nicht den XPath, den der Browser für dich generiert :) Gib die HTML-Quelle in der Frage oder einen Link zum öffentlich sichtbaren System an und wir helfen dir. – Todor

Antwort

0

Ich hatte das gleiche Problem mit Xpath. js, vagy angular etc. Websites, die den Inhalt dynamisch generiert einfach nicht funktioniert. Ich habe viel Zeit für mein vorheriges Automatisierungsprojekt aufgewendet, um eine Lösung dafür zu finden: Gebäude eigene xpath. Bedeutet nicht nur Insect Element in Chrome und anderen Browsern, müssen Sie sie selbst bauen, während Sie lernen, wie der Code und die Website funktioniert. Dies ist das die Methode sollten Sie wie folgt vor:

  • vertraut mit dem Front-End-Client-Code
  • lernen xpath
  • Ihre eigenen XPath

Sie finden müssen, bauen, wie Sie erreichen können das gewünschte Element, ohne @id s zu verwenden. Verwenden Sie css classes, die das selten zufällig ändern und die Beziehungen zwischen Ihrem Element herausfinden. Sie müssen die following-sibling und text() und andere weniger berühmte Xpath-Selektoren verwenden. Ich würde Ihnen empfehlen, this mit xpath vertraut zu machen. Es gab keinen anderen Weg für mich, aber am Ende hatte ich eine erstaunliche, gut formatierte Variable Dateien, enthält alle XPaths des Elements.

+1

Ich muss zustimmen, es gibt keinen anderen Weg, um das Ding zu lernen. Xpath ist eine (Teil einer) Sprache wie jede andere auch, ziemlich einfach und geradlinig, und was wir in selen/webdriver verwenden, ist in den meisten Fällen das Grundset. Ich kann mir nicht vorstellen, zu versuchen, ohne das Wissen einer Programmiersprache zu programmieren. Das w3c ist die definitive Ressource, aber man kann das w3school-Tutorial auch dazu starten. Und für die Liebe Gottes, benutze niemals den xpath/css, der von den Browsern vererbt wird :) – Todor

-1

In diesem Fall ist der Menüeintrag (das li Element) ein Enkel eines div mit bestimmter Klasse und ein Kind von ul.Wenn Sie nach den a gehen, würde die XPath sein:

//div[@class="menuslide”]/ul/li/a[@title="Alumnos"] 

Wenn das Zielelement die li sein soll, können Sie diese XPath verwenden können - es ist die wählt li ein Kind mit dem Titel:

//div[@class="menuslide”]/ul/li[a[@title="Alumnos"]] 

Wenn Sie für die Änderungen es robuster zu machen, aber ein bisschen langsamer, können Sie die Eltern-Kind-Beziehung zwischen dem ul und dem div überspringen, und es und die li, und machen es „finden Sie mich einfach ein li Element, das hat Vorfahr ein div mit dieser Klasse ":

//div[@class="menuslide”]//li/a[@title="Alumnos"] 

Und diese das allgemeine Muster XPaths schaffen - Sie ein gemeinsames Attribut Muster finden, das (die Klasse und den Titel-Attribut) bleiben wird, und eine Bewertung Weg, nur wird lokalisieren zu dem spezifischen Element, unter Berücksichtigung der Abwägung zwischen Evaluierungsgeschwindigkeit und Robustheit (die Geschwindigkeit ist weniger ein Problem mit den modernen Browsern und Hardware)

+0

Danke für deine Antwort. Es ist möglich, dass ich das Objekt nicht finden kann, weil es durch das mobile_menu dupliziert wird, wenn es reagiert? Wenn ja, wie kann ich doppelte Objekte identifizieren? Nach dem Index? Ich weiß nicht ... – Marta79

+0

Wenn mehrere Elemente übereinstimmen, gibt der Xpath alle zurück - so sieht man, dass es mehr gibt. Ist das dein aktuelles Problem, wird das Element nicht gefunden? @ Marta79 – Todor

+0

Dank Todor, ich glaube, ich beginne zu verstehen, was los ist. Ich kann auf die Menüelemente der ersten Ebene zugreifen, aber nicht auf die zweite und dritte Ebene des Dropdown-Menüs. Ich habe diesen Fehler> Nachricht: Element nicht sichtbar. Ich habe versucht "Warte, bis Seite Element enthält" finde die Klasse mit dem Hover-Untermenü, aber kein Glück. Irgendwelche Vorschläge? – Marta79

1

Ich habe es endlich zur Arbeit (sogar auf der dritten Ebene des Menüs) mit folgenden Befehlen:

Wait Until Page Contains Element 
Sleep 
Mouse Over 
Click Link 

Und eine Mischung aus verschiedenen XPath:

xpath=//*[@class="dropdown"]//a[contains(., 'Alumnos')] 
xpath=//*[@class="dropdown"]/li[3]/div/ul/li[1]/div/ul/li[1]/a 

Vielen Dank allen für Ihre Hilfe

Verwandte Themen