2008-12-31 7 views
8

Ich möchte einen Teil einer ID speichern und den Rest rauswerfen. Zum Beispiel habe ich ein html-Element mit der ID 'element-12345'. Ich möchte 'Element-' rauswerfen und '12345' behalten. Wie kann ich das erreichen?Wie funktionieren reguläre Ausdrücke in Selen?

Ich kann den Wert erfassen und Echo, wie folgt aus:

| storeAttribute | //[email protected] | myId | 
| echo | ${!-myId-!} | |

Wenn ich den Test ausführen, bekomme ich so etwas wie dieses:

| storeAttribute | //[email protected] | myId | 
| echo | ${myId} | element-12345 |

Ich bin mit der Selenium IDE Aufnahme, und Kopieren des Tests über die Selenium Bridge-Vorrichtung in Fitnesse. Das Problem ist, dass ich jedes Mal, wenn ich den Test ausführe, eine saubere Datenbank benutze, mit zufälligen IDs, die ich während meines Tests erfassen und verwenden muss.

+0

+1 weil Selen ist ein ausgezeichnetes Werkzeug! –

Antwort

11

Die Lösung ist die JavaScript-Funktion replace() mit storeEval zu verwenden:

| storeAttribute | //[email protected]         | elementID | 
| storeEval  | '${elementID}'.replace("element-", "")     | myID  | 

Nun, wenn ich echo myID ich nur die ID erhalten:

| echo | ${myID} | 12345 | 
2

/Element - (\ d +)/i

, dass ein regulärer Ausdruck ist, dass die Zahlen nach dem Bindestrich erfassen würde.

+0

Danke! Wohin würde das in meinem Code gehen? | storeAttribute | // PfadToMyElement @ ID | myId | – Andrew

+0

Es tut mir wirklich leid, aber ich habe Selen vorher nie benutzt. Ich habe den regulären Ausdruck gepostet und gehofft, dass jemand, der ihn vorher benutzt hat, mitkommen und dir helfen könnte, ihn zu benutzen. Ich werde etwas recherchieren und sehen, ob ich eine Antwort finden kann :) – Salty

2

So etwas wie diese Macht Arbeit:

| storeAttribute | fn:replace(//[email protected],"^element-","") | myId | 

regex Dazu erfordert XPath 2.0 - nicht sicher, welche Version Selenium implementiert.