2017-01-26 6 views
0

Ich habe ein Testszenario, wo ich einen neuen Eintrag (Banana) in eine Tabelle erstellen, den Eintrag anschließend ändern und dann löschen.Lokalisieren Sie Element mit relativen XPath und Textdeskriptor

Die Tabelle enthält eine Schaltfläche zum Ändern und eine Schaltfläche zum Löschen neben der Textbeschreibung des neuen Eintrags. Ich würde gerne relative XPath verwenden, um den Textwert zu finden, dann wähle irgendwie die Schaltfläche zum Löschen oder Ändern, abhängig von dem Testszenario, das ausgeführt wird. enter image description here

Eine Probe von Code verwendet wird, ist:

*** Settings *** 
[Documentation] Delete Fruit from table 
Suite Teardown Close all browsers 
Library Selenium2Library 
Library XvfbRobot 
Library Collections 

*** Variables *** 
${delFruit} Banana 

*** Test Cases *** 
Delete Fruit Button 
    wait until element is visible xpath=//div[@id='${delFruit}'] 
    click element xpath=//div[@id='${delFruit}']/a[2]/span 
    confirm action 

hier ein Schnipsel des html hinter den Kulissen ist - all die Löschtasten verwenden, um die Textbeschreibung des „Fruit Löschen“:

Das Problem ist, dass wenn ich einen neuen Eintrag in der Tabelle erstellen, die Tabelleninhalte in alphabetischer Reihenfolge geändert werden. In Wirklichkeit befindet sich der Banana-Eintrag also zwischen dem Apfel und dem Orange.

ich das Click-Element Aktion auf die Schaltfläche Löschen hart codieren könnte: click element xpath=/html/body/div[1]/div/div[2]/div/div[2]/table/tbody/tr[1]/td[1]/a[2]

ich einen Weg zu finden hoffte, dass das Element nach links von der Banana xpath=/html/body/div[1]/div/div[2]/div/div[2]/table/tbody/tr[1]/td[1]/a[2] wie die Platzierung der Tabellenelemente zu identifizieren, verschiebt sich neue Gegenstände werden hinzugefügt.

Hat jemand irgendwelche Vorschläge, wie man die Löschtaste auf der linken Seite der Banane auswählt?

Antwort

1

Soweit Ihre Situation zu verstehen, sollte prescending-sibling XPath Achse helfen:

//td[contains(text(), 'Banana')]/prescending-sibling::td/a[/span[contains(@title, 'Delete')]]

+0

Dank Anton, das ist genau das, was ich gesucht habe! Ich versuche das jetzt! –

Verwandte Themen