Como fazer expressões regulares trabalho em selênio?
-
03-07-2019 - |
Pergunta
Eu quero armazenar parte de um id, e jogar fora o resto. Por exemplo, eu tenho um elemento html com uma identificação de 'elemento-12345'. Eu quero jogar fora 'element-' e manter '12345'. Como posso fazer isso?
I pode capturar e exibir o valor, como este:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${!-myId-!} | |
Quando eu executar o teste, eu recebo algo como isto:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${myId} | element-12345 |
Eu estou gravando com o Selenium IDE, e copiando o teste sobre em Fitnesse, usando o gabarito de selênio Bridge. O problema é que eu estou usando um banco de dados limpo cada vez que eu executar o teste, com ids aleatórios que eu preciso para captura e uso em todo o meu teste.
Solução
A solução é usar a função replace()
JavaScript com storeEval
:
| storeAttribute | //pathToMyElement@id | elementID |
| storeEval | '${elementID}'.replace("element-", "") | myID |
Agora, se eu echo myID
I obter apenas o ID:
| echo | ${myID} | 12345 |
Outras dicas
/ elemento - (\ d +) / i
Isso é uma expressão regular que captura os números após o traço.
Algo como isto pode trabalho:
| storeAttribute | fn:replace(//pathToMyElement@id,"^element-","") | myId |
Para fazer regex exige XPath 2.0 -. Não tenho certeza que implementa versão selênio