Estoy tratando de resolver un problema simple que no puedo entender cómo podría resolver en Excel VBA.

Tengo un ciclo para y un Xpath con 24 elementos y quiero obtener texto de cada elemento, pero cuando uso xpath me muestra que puse el xpath incorrecto. Entiendo que puse i dentro de la cadena de xpath y eso me malinterpreta. Intento un enfoque diferente como usar

Name.Add findApp.FindElementByXPath("(//span[@class='offer-item-title'])["&"i]").Text pero nada parece funcionar. ¿Alguien puede ayudarme a resolver esto? Muchas gracias :)

Código:

for i=0 to 23

Name.Add findApp.FindElementByXPath("(//span[@class='offer-item-title'])[i]").Text

Next i
0
wsn 13 mar. 2021 a las 23:54

1 respuesta

La mejor respuesta

XPath no sabe que i es el nombre de una variable VB, cree que es el nombre de un elemento en su documento fuente.

Puedes construir una expresión como esta:

FindElementByXPath("(//span[@class='offer-item-title'])[" & i & "]")

O mejor, pero no sé si VBA ofrece la capacidad, es pasar un parámetro a la expresión XPath; idealmente, solo desea compilar la expresión XPath una vez, en lugar de repetir la compilación 23 veces, porque compilarla normalmente requiere 100 veces más que ejecutarlo.

Pero para este ejemplo en particular, sería mejor construir una expresión que lea todo lo que desea de una vez, en lugar de hacer 24 llamadas separadas. Por cierto, la indexación de XPath comienza en uno, por lo que la llamada con i = 0 no seleccionará nada. Dado que esto es XPath 1.0, puede hacer

//span[@class='offer-item-title'])[position() < 24]
1
Michael Kay 14 mar. 2021 a las 11:29