que tiene este XPath: //*[@id="someId::button"]
selenio WebDriver: encontrar todos los elementos con id similares
Al pulsarlo muestra una lista desplegable de valores.
Ahora, sé que todos los elementos de la lista tienen un identificador de la siguiente manera:
//*[@id="someId--popup::popupItemINDEX"]
, donde el índice es un número de 1 a cualquiera que sea el número de opciones.
También sé el valor que debo hacer clic.
Una pregunta sería: dado que siempre sabré la identificación del botón que genera el menú desplegable, ¿puedo obtener todos los elementos en el menú desplegable con un método reutilizable? (Necesito para interactuar con más de un desplegable)
La forma en que pensaba al respecto es: obtener la raíz de la identificación inicial, como en:
//*[@id="someId
continuación, añadir el resto: --popup::popupItem
. También tengo que añadir el índice y pensé que podría utilizar un bloque try (con el fin de conseguir a pesar de las excepciones cuando doy un índice mayor de lo esperado) como esto:
for(int index=1;index<someBiggerThanExpectedNumber;index++){
try{
WebElement aux= driver.findElement(By.xpath(builtString+index+"\"]"));
if(aux.getText().equals(myDesiredValue))
aux.click();
}catch(Exception e){}
}
Tenga en cuenta que estoy usando el WebDriver api y java.
Me gustaría saber si esto funcionaría y si hay una manera más fácil de hacerlo, dada la información inicial que tengo.
EDIT: La forma en que sugirió obras, pero para una solución más fácil, la respuesta aceptada debe ser visto
tratando de encontrar todos los elementos no funcionará, ya que la lista se genera ad-hoc, además de la parte de identificación, todos los demás atributos tienen valores diferentes todo el tiempo, incluso si los valores son los mismos. Primero necesito presionar el botón desplegable para poder acceder/ver los elementos. ¡Gracias por la entrada en encontrar niños de elementos! – CosminO
Todavía no puedo ver el problema. Haga clic en el botón desplegable, luego encuentre todos los elementos que se muestran? –
'// * [contiene (@id, 'someId - popup :: popupItem') y text() = 'myDesiredValue']' selecciona el elemento que ID contiene "someId - popup :: popupItem" y qué texto el valor es igual a su valor deseado. ... después de hacer clic en el botón desplegable, por supuesto. –