¿Cómo funcionan las expresiones regulares en selenio?
-
03-07-2019 - |
Pregunta
Quiero almacenar parte de una identificación y tirar el resto. Por ejemplo, tengo un elemento html con una identificación de 'element-12345'. Quiero tirar 'elemento-' y mantener '12345'. ¿Cómo puedo lograr esto?
Puedo capturar y hacer eco del valor, así:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${!-myId-!} | |
Cuando ejecuto la prueba, obtengo algo como esto:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${myId} | element-12345 |
Estoy grabando con el Selenium IDE y copiando la prueba en Fitnesse, usando el dispositivo Selenium Bridge. El problema es que estoy usando una base de datos limpia cada vez que ejecuto la prueba, con identificadores aleatorios que necesito capturar y usar durante mi prueba.
Solución
La solución es utilizar la función JavaScript replace ()
con storeEval
:
| storeAttribute | //pathToMyElement@id | elementID |
| storeEval | '${elementID}'.replace("element-", "") | myID |
Ahora si hago eco de myID
obtengo solo la ID:
| echo | ${myID} | 12345 |
Otros consejos
/ element - (\ d +) / i
Esa es una expresión regular que capturaría los números después del guión.
Algo como esto podría funcionar:
| storeAttribute | fn:replace(//pathToMyElement@id,"^element-","") | myId |
Para hacer expresiones regulares se requiere XPath 2.0, no estoy seguro de qué versión implementa Selenium.