更新2 - 添加before(:each)
块
before(:each) do
...
post_via_redirect(
sub_domain(
path: login_view_path(
@p
),
subdomain: @account.subdomain
),
first_name: "Capybara",
last_name: "RSpec"
)
expect(response).to render_template(:show)
end
更新
response.body
有我正在寻找的数据
但是page.html
只有一个doctype。
ORIGINAL
我正在尝试进行一些集成测试。我有这个:
require "spec_helper"
feature "Tracking without Javascript" do
...
scenario "when navigating to a content" do
...
# this passes so I know there is a body
expect(response.body).to include(c.name)
find(:xpath, "/html") # see if xpath works...
end
end
我收到错误:
Failure/Error: find(:xpath, "/html")
Capybara::ElementNotFound:
Unable to find xpath "/html"
任何想法?
答案 0 :(得分:0)
post_via_redirect
不涉及Capybara - 直接(或多或少)与Rails交互,但不通过浏览器交互。这就是Capybara从未指出实际页面的原因。
后代的原创(误导)答案:
如果您使用的是最新版本的所有产品,那么Capybara默认情况下不会找到不可见的元素。您可以试试find(:xpath, "/html", visible: false)
,看看是否有效?我能想到的另一件事是你的XPath可能没有像你期望的那样匹配。请改为//html
。
在元级别上,您几乎从不会看到这种断言,因为最终用户并不关心您是否有html
元素。通过检查用户可以看到的内容,您将获得更多有用的测试。我也更喜欢使用CSS选择器,因为其他东西(JavaScript和CSS)也倾向于关注它们。我们的整个测试套件可能有一个或两个XPath选择器,用于非常难看的情况。