I want to store part of an id, and throw out the rest. For example, I have an html element with an id of 'element-12345'. I want to throw out 'element-' and keep '12345'. How can I accomplish this?
I can capture and echo the value, like this:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${!-myId-!} | |
When I run the test, I get something like this:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${myId} | element-12345 |
I'm recording with the Selenium IDE, and copying the test over into Fitnesse, using the Selenium Bridge fixture. The problem is I'm using a clean database each time I run the test, with random ids that I need to capture and use throughout my test.
The solution is to use the JavaScript replace()
function with storeEval
:
| storeAttribute | //pathToMyElement@id | elementID |
| storeEval | '${elementID}'.replace("element-", "") | myID |
Now if I echo myID
I get just the ID:
| echo | ${myID} | 12345 |
/element-(\d+)/i
That's a regular expression that would capture the numbers after the dash.
Something like this might work:
| storeAttribute | fn:replace(//pathToMyElement@id,"^element-","") | myId |
To do regex requires XPath 2.0 - not sure which version Selenium implements.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With