2011-01-27 1 views
9

Ho uno scenario che convalida che l'immagine che ho appena caricato esiste nella pagina successiva.Come si esegue una ricerca regolare sull'espressione xpath nella definizione del passo Cucumber/Capybara (Rails 3)?

Questo sotto funziona alla grande, tranne che ho una struttura di cartelle variabili basata su listing_id. Come posso usare regex qui per far corrispondere l'immagine solo al nome file invece dell'intero URL?

Then /^I should see the image "(.+)"$/ do |image| 
    page.should have_xpath("//img[@src=\"/public/images/#{image}\"]") 
end 

risposta

15

Prova page.should have_xpath("//img[contains(@src, \"#{image}\")]"), che corrisponderà alcun img cui src contiene il nome del file.

+0

Suggerirei piuttosto di utilizzare la funzione 'ends-with'. –

+0

@ alpha-mouse puoi mostrare un esempio di codice di questo? –

+0

@Jamis: intendevo usare la funzione XPath 'ends-with' invece di' contains'. Non so nulla di ruby, ma copia-incolla il codice di @dmarkow darà 'page.should have_xpath (" // img [ends-with (@src, \ "# {image} \")] ")' –

0

Se si ha la possibilità quindi utilizzando un selettore CSS è più concisa, in questo caso:

page.should have_selector(:css, "a[href$='#{image}']") 

Annotare il '$' in poi fine del 'href$' per indicare la corrispondenza con la fine della stringa.