Selenio: ¿Es posible concatenar un xpath con una variable?
Pregunta
La xpath de mis elementos se está volviendo extremadamente difícil de leer.
// div [@ id = 'main_content'] / div [2] / div [2] / div [2] / div [4] / table / tbody / tr [2] / td / form / fieldset / p [1] / input
Sería bueno si pudiera almacenar la mayor parte de eso como una variable y usarlo más adelante de esta manera:
| assertElementPresent | $ {myForm}. / fieldset / p [1] / input |
¿Es algo como esto posible? ¡Haría mis exámenes mucho más fáciles de leer!
Solución
Usted realmente debería anclar sus expresiones de selenio en ID de elementos en su lugar. En 2 meses, nadie tendrá la menor idea de lo que apunta xpath, especialmente si se rompe la prueba en el momento en que necesita averiguarlo. Rutinariamente añadimos id's a element solo para facilitar las pruebas. Hemos aprendido a aceptar que escribimos el código Java de una manera especial para que sea verificable, y creo que también está bien para HTML.
Otros consejos
Puedes escribir:
store | //div[@id='main_content']/div[2]/div[2]/div[2]/div[4]/table/tbody/tr[2]/td/form | myForm
assertElementPresent | xpath=${myForm}/fieldset/p[1]/input
Sin embargo, como dijo Krosenvold, las rutas largas pueden ser bastante frágiles. Si le preocupa la legibilidad de su código y desea que todos sus localizadores estén en un archivo donde pueda realizar cambios en cascada, es posible que desee considerar el uso de un mapa UI-Element.