Come acquisire solo una parte di un ID?
-
03-07-2019 - |
Domanda
Sto cercando di catturare l'id di un elemento che verrà generato casualmente. Posso catturare con successo il valore del mio ID elemento come questo ...
| storeAttribute | //div[1]@id | variableName |
Ora la mia variabile sarà qualcosa come ...
divElement-12345
Voglio rimuovere 'divElement-' in modo che la variabile che mi rimane sia '12345' in modo da poterla utilizzare in seguito per selezionare l'elemento 'form-12345' associato ad esso ... qualcosa del genere:
| type | //tr[@id='form-${variableName}']/td/form/fieldset/p[1]/input | Type this |
Come potrei riuscire a farlo?
Soluzione
Sono disponibili due opzioni in Selenium, XPath e CSS Selector. Ho letto che CSS Selector è meglio per fare test sia su FireFox che su IE. Utilizzando l'ultima versione di Selenium IDE (3/5/2009) ho avuto successo con l'utilizzo di storeEval che valuta le espressioni Javascript, dandoti accesso alle funzioni stringa 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
Selettore 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
Altri suggerimenti
Esistono molte funzioni in XPATH che dovrebbero risolvere il tuo problema. Supponendo che " divElement- " è una costante che non cambierà e che stai usando XPath 2.0, suggerirei:
substring-after (div [1] / @ id / text (), " divElement- ")