gpt4 book ai didi

ruby-on-rails - 如何在 Rails 3 中使用 Cucumber/Capybara 在页面上找到图像

转载 作者:行者123 更新时间:2023-12-03 11:05:05 26 4
gpt4 key购买 nike

我正在将 Cucumber/Capybara 与 Rails 3 一起使用,并尝试在上传后验证图像是否存在。我不确定如何检查图像的 url 以对其进行验证。

我有以下场景:

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"

除了最后一步,一切都会过去。

我已经为我的步骤定义尝试过这个,如果它是页面上的文本,它会很好用,但不适用于图像 url:
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

然后我也尝试了类似这个步骤定义的东西:
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

这会导致以下错误:
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"'

我假设您需要一个 nokogiri 步骤才能正确找到它。或者如果有更好的方法,我愿意接受建议。如何验证我刚刚上传的图像是否在页面上?谢谢。

最佳答案

Nokogiri 的解决方案应该可以正常工作。唯一的问题是 Cabybara API 与 Webrat 不同,所以不是 response.body ,您必须使用 page.body .

但是有一个更好的方法来测试 Cabybara 的图像:

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

关于ruby-on-rails - 如何在 Rails 3 中使用 Cucumber/Capybara 在页面上找到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com