Como capturar apenas parte de um ID?
-
03-07-2019 - |
Pergunta
Estou tentando capturar o ID de um elemento que será gerado aleatoriamente. Eu posso capturar com sucesso o valor do meu elemento ID como este ...
| storeAttribute | //div[1]@id | variableName |
Agora minha variável será algo como ...
divElement-12345
Eu quero remover 'divisElement-' para que a variável que me restava é '12345' para que eu possa usá-la mais tarde para selecionar o elemento 'Form-12345' associado a ele ... algo assim:
| type | //tr[@id='form-${variableName}']/td/form/fieldset/p[1]/input | Type this |
Como posso conseguir isso?
Solução
Você tem duas opções no seletor de selênio, XPath e CSS. Eu li que o seletor CSS é melhor para fazer testes no Firefox e no IE. Usando a versão mais recente do Selenium IDE (3/5/2009), tive sucesso com o uso do StoreEval, que avalia expressões JavaScript, dando acesso às funções de string JavaScript.
Xpath:
storeAttribute | //div[1]@id | divID
storeEval | '${divID}'.replace("divElement-", "") | number
type | //tr[@id='form-${number}']/td/form/fieldset/p[1]/input | Type this
Seletor CSS:
storeAttribute | css=div[1]@id | divID
storeEval | '${divID}'.replace("divElement-", "") | number
type | css=tr[id='form-${number}'] > td > form > fieldset > p[1] > input | Type this
Outras dicas
Existem muitas funções no XPath que devem resolver seu problema. Supondo que "divisElement-" seja uma constante que não mudará e que você está usando o XPath 2.0, eu sugeriria:
Substring-After (div [1]/@id/text (), "divisElement-")