Tôi đang sử dụng Cucumber/Capybara với Rails 3 và đang cố gắng xác thực sự tồn tại của hình ảnh sau khi tải lên. Tôi không chắc chắn làm thế nào để kiểm tra url của hình ảnh để xác nhận nó.Làm cách nào để tìm hình ảnh trên trang có Cucumber/Capybara trong Rails 3
Tôi có các tình huống sau:
Scenario: Create new listing
Given I am on the new listing page
When I fill in "listing_name" with "Amy Johnson Photography"
And I attach the file "features/support/test_image.jpg" to "listing_images_attributes_0_photo"
And I press "Create"
Then I should see "Amy Johnson Photography"
And I should see the image "test_image.jpg"
Tất cả mọi thứ trôi qua, ngoại trừ bước cuối cùng.
Tôi đã thử này cho độ nét bước của tôi, mà làm việc tuyệt vời nếu đó là văn bản trên trang, nhưng không cho một url hình ảnh:
Then /^I should see the image "(.+)"$/ do |image|
if page.respond_to? :should
page.should have_content(image)
else
assert page.has_content?(image)
end
end
Sau đó, tôi cũng đã thử một cái gì đó giống như bước này định nghĩa thay vì:
Then /^I should see the image "(.+)"$/ do |image|
html = Nokogiri::HTML(response.body)
tags = html.xpath('//img[@src="/public/images/foo.png"]')
# tags.length.should eql(num_of_images)
end
gây lỗi sau:
And I should see the image "test_image.jpg" # features/step_definitions/listing_steps.rb:41
undefined method `body' for nil:NilClass (NoMethodError)
./features/step_definitions/listing_steps.rb:42:in `/^I should see the image "(.+)"$/'
features/manage_listings.feature:24:in `And I should see the image "test_image.jpg"'
tôi giả định bạn cần một bước nokogiri để tìm ra điều này đúng. Hoặc nếu có cách nào tốt hơn, tôi mở lời đề xuất. Làm cách nào tôi có thể xác thực rằng hình ảnh tôi vừa tải lên nằm trên trang? Cảm ơn.
Trong định nghĩa bước của bạn, bạn đang nhận được một lỗi Capybara chung. Hãy thử sử dụng 'page.body' thay vì 'response.body' nếu tôi nhớ chính xác. – Mauricio
Tôi không biết liệu bạn có thể sử dụng regex trong xpath hay không, nhưng nếu bạn có quyền truy cập vào cá thể Liệt kê của mình, bạn chỉ có thể sử dụng phép nội suy chuỗi "// img [@src = '/ public/images/# {@ listing_id } /foo.png '] " – monocle
Trang này chứa tham chiếu bộ chọn CSS3 tốt sẽ giúp bạn: http://reference.sitepoint.com/css/css3attributeselectors – sivabudh