Cómo combinar encontrar y en el uso de Carpincho?

La siguiente funciona como se esperaba:

 within('h2', text: 'foo') do
      should have_content 'bar'
 end

Estoy tratando de verificación en el elemento primario, el uso de find(:xpath, '..')

Una vez que encuentre un elemento, cómo aplicar .find(:xpath, '..'), y a continuación, comprobar que algo dentro de que elemento?

¿Por qué no utilizar una sola instrucción XPath?
Me parece 'h2', text: 'foo' más legible.
Me estaba refiriendo a tu última frase: en Lugar de aplicar una XPath y luego otro, puede utilizar un solo XPath.

OriginalEl autor B Seven | 2012-12-14

3 respuestas

  1. 18

    Cuando se utiliza XPath localizador dentro de within debe empezar con . (si no se inicia con . la búsqueda se realiza no en .myclass pero dentro de todo el documento).

    E. g.:

    within('.myclass') do
      find(:xpath, './div')
    end

    o:

    find('.myclass').find(:xpath, './div')

    Código de @BSeven la respuesta puede ser escrito en una sola línea:

    expect(find("//h2[text()='foo']/..")).to have_text('bar')

    o

    expect(page).to have_xpath("//h2[.='foo']/..", text: 'bar')
    Si yo uso './p[@class=test]' no es capaz de encontrar, Si yo uso '//p[@class=test]' su coincidencia de un mismo elemento y otro elemento fuera del elemento padre.. por Favor ayuda
    Se trabajó con .//p[@class=test]
    ./ funciona perfectamente, gracias!

    OriginalEl autor Andrei Botalov

  2. 4

    El siguiente es un enfoque:

     within('h2', text: 'foo') do
       within(:xpath, '..') do
         should have_content 'bar'
       end       
     end
    Lo mismo se puede hacer en una sola línea: find("//h2[text()='foo']/..").should have_content 'bar'

    OriginalEl autor B Seven

  3. 4

    Con la nueva sintaxis de Rspec después de 2.11, debe ser;

    within('h2', text: 'foo') do |h|
       expect(h).to have_content 'bar'
    end     

    OriginalEl autor beydogan

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *