2012-04-03 6 views
1

Mit Selenium IDE versuche ich, eine Verknüpfung innerhalb einer Tabellenzeile zu finden. Die Tabellenzeilen werden dynamisch generiert. Jede Zeile enthält eine Zelle mit Textinhalt und eine Zelle mit möglicherweise zwei oder mehr Verknüpfungen.Wählen Sie eine Verknüpfung in einer Tabellenzeile basierend auf dem Zelleninhalt

Ich möchte einen automatisierten Test erstellen, der auf einen bestimmten Link in einer bestimmten Zeile klickt, auf den durch einen bestimmten Text verwiesen wird. Zum Beispiel auf der folgenden Tabelle:

<html> 
<body> 
<table border="1"> 
<tr> 
    <td> 
    Hello World! 
    </td> 
    <td> 
    Type Greeting 
    </td> 
    <td> 
    <a href="www.foo.com/view/id=123456">View</a> 
    <a href="www.foo.com/delete/id=123456">Delete</a> 
    </td> 
</tr> 
<tr> 
    <td> 
    Buenos Dias! 
    </td> 
    <td> 
    Type Greeting 
    </td> 
    <td> 
    <a href="www.foo.com/view/id=789101">View</a> 
    <a href="www.foo.com/delete/id=789101">Delete</a> 
    </td> 
</tr> 
</table> 
</body> 
</html> 

Das Szenario ist, auf einer vorherigen Seite hinzufügen I-Daten „Buenos Dias“. Auf der nächsten Seite wird eine Tabelle aller hinzugefügten Daten angezeigt. Ich möchte auf den Link "Ansicht" der gerade hinzugefügten Daten klicken können (in diesem Fall den Eintrag "Buenos Dias!").

Was wäre eine gute Möglichkeit, den "View" -Link durch Bezugnahme auf den Text "Buenos Dias!" Zu finden?

Ich bin in der Lage, die Zelle zu finden, das den Text enthält:

//td[text()="Buenos Dias!"] 

Aber ich will, es benutzen irgendwie als Referenz für ihren jeweiligen Link „Anzeigen“ aus der Tabelle zu lokalisieren. Ich habe Geschwisterformate ausprobiert (folgend, vorhergehend) und ich kann nicht scheinen, dass es richtig funktioniert. Die Verwendung eines absoluten xpath (html/body/table/tbody/tr [1]/td [3]/a [1]) funktioniert nicht, da sich die Daten ändern können und der Eintrag in einer anderen Zeile erscheint.

Vielen Dank im Voraus und lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

  • Selenium IDE 1.7.2
  • Firefox 9.0.1
  • Mac OS X Lion 10.7.3

Antwort

3

Verwendung:

(//td[normalize-space() ="Buenos Dias!"])[1]/following-sibling::td[2]/a[. = 'View'] 
+0

Danke Dimitre! Das hat für mich funktioniert. – RaymundS

+0

@ Raymunds: Gern geschehen –

0
//find table first 
WebElement q= d.findElement(By.xpath("//*[@id='applicationcontent']/div[6]/table/tbody/tr")); 

// find a unique value of the row and click on link of the row which is after the text you find. 
     q.findElement(By.xpath("//td[contains(text(),'[email protected]')]/following-sibling::td/a[@id='edit.png']")).click(); 
0

(//td [Normalisieren-Raum() = "Buenos Dias!"]) [1]/folgendes-Geschwister :: td [ 2]/a [. = 'View']

Verwandte Themen