2011-03-18 12 views
7

Soy relativamente nuevo en Watir pero no puedo encontrar una buena documentación (ejemplos) sobre cómo verificar si existe un elemento. Existen las especificaciones API, por supuesto, pero estas tienen poco sentido para mí si no encuentro un ejemplo.Cómo detectar si existe un elemento en Watir

He intentado ambas combinaciones, pero nada parece funcionar ... si browser.image (src: "/media/images/icons/reviewertools/editreview.jpg").exists entonces ... si browser.image (: src "/media/images/icons/reviewertools/editreview.jpg").exists? luego ...

Si alguien tiene una sugerencia concreta sobre cómo implementar esto, ¡por favor ayuda! ¡Gracias!

+0

, facilite HTML de la imagen –

+0

Sírvanse proporcionar HTML sin ella sólo podemos adivinar lo que está haciendo mal, por lo que sabemos esto no es una pero quizás un o un enlace –

+0

Posible duplicado de http://stackoverflow.com/questions/5359556/unable-to-find-method-for-detecting-if-element-exists-on-a-page/5396645#5396645 –

Respuesta

2

Parece que lo está utilizando correctamente. Aquí hay un viejo RDoc of Watir.

¿No funciona porque Watir no puede encontrarlo? Difícil de decir porque no hay una fuente o un enlace a la página que se está probando. Creo que solo uso image.exists?. En general, los errores que surgen cuando la imagen existe pero no se encuentran son:

  1. El cómo no es compatible con el tipo de elemento. Hay una hoja de trucos para ayudarlo a ver qué tipos de objetos se pueden encontrar con diferentes atributos here.
  2. Lo que no es correcto. Puede que tengas que jugar con eso un poco. Considere probar una cadena de expresiones regulares para que coincida, como browser.image (: src, /editreview.jpg/). Como último recurso, tal vez use element_by_xpath, pero hay costos de mantenimiento con eso.
  3. La ubicación no es correcta. Tal vez el elemento está en un marco o algo así. browser.frame ("detalle"). image (: src, /editreview.jpg/).

Pruébalo, pero por favor avísame qué funcionó. Una cosa más, ¿qué estás buscando? Si es parte de los criterios de prueba, puede manejarlo de esa manera. Si necesita hacer clic en él, entonces olvídese de .exists? y simplemente haga clic en él. Ruby te avisará si no está allí. Si necesita que sea gracia, obtenga información sobre begin/rescue.

Buena suerte,

de Dave

+0

Gracias a todos por su respuesta. Dave, ¿podrías especificar un ejemplo de cómo se supone que debo usar image.exists? El código que estoy usando es: if browser.image (: src "/media/images/icons/reviewertools/editreview.jpg") .exists? No funciona y devuelve: Adm in_Panel2.rb: 45: error de sintaxis, inesperado ')', esperando kEND ... reviewertools/editreview.jpg "). exists? ^ Admin_Panel2.rb: 48: error de sintaxis, inesperada Kelse, esperando KEND Admin_Panel2.rb: 212: error de sintaxis, inesperada KEND, esperando $ terminan Lo sentimos, pero estoy perdido sin un ejemplo específico. Gracias. – Rijksband

+0

@rijksband Un error de sintaxis significa que el intérprete de ruby ​​tuvo un problema al analizar el código. Podría significar un paréntesis/coma faltante o adicional o muchas otras razones. En este caso, es muy probable que sea la coma que falta entre: src y la ruta de la imagen. Es posible que desee considerar el uso de un editor más potente porque muchos de ellos le señalarán el error tal como está escrito. – juan2raid

2

El código que envió debería funcionar bien. Editar: Vaya, mal. Como Katmoon señaló, hay una coma faltante.

browser.image(:src "/media/images/icons/reviewertools/editreview.jpg").exists? 

Un problema que puede quedar atrapado es si la variable del navegador que ha especificado es en realidad un elemento que no existe.

p. Ej.

b = Watir::IE.start(ipAddress) 
b.frame(:name, "doesntExist).image(:src "/media/images/icons/reviewertools/editreview.jpg").exists? 

El código anterior arrojará una Watir :: UnknownFrameException. Puede evitar esto verificando primero que el marco exista o rodeando el código en un bloque de inicio/rescate.

+0

Eso sigue suponiendo que la cosa realmente es una imagen ... ¿y si es un botón o un enlace? sin él, proporcionando HTML, solo podemos hacer conjeturas. –

15

Parece que le falta una coma entre los parámetros.

Debe ser

if browser.image(:src, "/media/images/icons/reviewertools/editreview.jpg").exists? 

También usted puede encontrar this page útil en el futuro para saber qué atributos son compatibles.

Cuestiones relacionadas