Come funzionano le espressioni regolari nel selenio?
-
03-07-2019 - |
Domanda
Voglio archiviare parte di un ID e buttare via il resto. Ad esempio, ho un elemento html con un id di "element-12345". Voglio eliminare "element-" e mantenere "12345". Come posso farlo?
Posso catturare ed echo il valore, in questo modo:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${!-myId-!} | |
Quando eseguo il test, ottengo qualcosa del genere:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${myId} | element-12345 |
Sto registrando con l'IDE Selenium e copiando il test su Fitnesse, usando l'apparecchiatura Selenium Bridge. Il problema è che sto usando un database pulito ogni volta che eseguo il test, con ID casuali che devo acquisire e usare durante il mio test.
Soluzione
La soluzione è utilizzare la funzione JavaScript replace ()
con storeEval
:
| storeAttribute | //pathToMyElement@id | elementID |
| storeEval | '${elementID}'.replace("element-", "") | myID |
Ora se echo myID
ottengo solo l'ID:
| echo | ${myID} | 12345 |
Altri suggerimenti
/ elemento - (\ d +) / I
È un'espressione regolare che catturerebbe i numeri dopo il trattino.
Qualcosa del genere potrebbe funzionare:
| storeAttribute | fn:replace(//pathToMyElement@id,"^element-","") | myId |
Per eseguire regex è necessario XPath 2.0 - non so quale versione implementa Selenium.