2011-01-27 12 views
9

Mam scenariusz, który sprawdza, czy obraz, który właśnie przesłałem, istnieje na następnej stronie.Jak wykonać wyszukiwanie wyrażenia xpath w definicji kroku Cucumber/Capybara (Rails 3)?

Poniższe działa świetnie, z tym że mam strukturę folderów zmiennych w oparciu o identyfikator aukcji. Jak mogę użyć wyrażenia regularnego tutaj, aby dopasować image tylko do nazwy pliku zamiast całego adresu URL?

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

Odpowiedz

15

Spróbuj page.should have_xpath("//img[contains(@src, \"#{image}\")]"), który będzie pasował do dowolnego img którego src zawiera swoją nazwę.

+0

Proponuję raczej użyć funkcji 'ends-with'. –

+0

@ alpha-mouse możesz pokazać przykład kodu? –

+0

@Jamis: Zamierzałem użyć funkcji 'ends-with' XPath zamiast' zawiera'. Nie wiem nic na temat ruby, ale kopiowanie kodu @dmarkow daje 'page.should have_xpath (" // img [end-with (@src, \ "# {image} \")] ") –

0

Jeśli opcja następnie przy użyciu selektora CSS jest bardziej zwięzły w tym przypadku:

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

Zanotuj „$” na czym skończyć z „href$” oznaczający dopasowanie przed końcem łańcucha.