¿Cómo capturar solo parte de un id?
-
03-07-2019 - |
Pregunta
Estoy intentando capturar el ID de un elemento que se generará aleatoriamente. Puedo capturar con éxito el valor de mi ID de elemento como este ...
| storeAttribute | //div[1]@id | variableName |
Ahora mi variable será algo así como ...
divElement-12345
Quiero eliminar 'divElement-' para que la variable que me queda sea '12345' para que pueda usarlo más adelante para seleccionar el elemento 'form-12345' asociado con él ... algo como esto:
| type | //tr[@id='form-${variableName}']/td/form/fieldset/p[1]/input | Type this |
¿Cómo podría lograr esto?
Solución
Tienes dos opciones en Selenium, XPath y CSS Selector. He leído que el Selector de CSS es mejor para hacer pruebas tanto en FireFox como en IE. Usando la última versión de Selenium IDE (5/5/2009) He tenido éxito con el uso de storeEval que evalúa las expresiones de Javascript, brindándole acceso a las funciones de cadena de 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
Selector de 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
Otros consejos
Hay muchas funciones en XPATH que deberían resolver su problema. Suponiendo " divElement- " es una constante que no cambiará y que está utilizando XPath 2.0, sugeriría:
substring-after (div [1] / @ id / text (), " divElement- ")