Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails xpath可以';在rspec测试中没有发现任何东西_Ruby On Rails_Ruby On Rails 3_Rspec_Capybara - Fatal编程技术网

Ruby on rails xpath可以';在rspec测试中没有发现任何东西

Ruby on rails xpath可以';在rspec测试中没有发现任何东西,ruby-on-rails,ruby-on-rails-3,rspec,capybara,Ruby On Rails,Ruby On Rails 3,Rspec,Capybara,更新2-在(:each)块之前添加 before(:each) do ... post_via_redirect( sub_domain( path: login_view_path( @p ), subdomain: @account.subdomain ), first_name: "Capybara", l

更新2-在(: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


原创的

我正在做一些集成测试。我有这个:

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"

有什么想法吗?

post\u via\u redirect
不涉及水豚——它直接(或多或少)与Rails交互,但不通过浏览器。这就是为什么水豚从不指向实际页面的原因

给后代的原始(误导)答案:

如果您使用的是所有内容的最新版本,那么默认情况下,水豚将不会找到不可见的元素。您能否尝试
查找(:xpath,“/html”,visible:false)
并查看是否有效?我能想到的另一件事是,您的XPath可能不像您期望的那样匹配。试试
//html


在元级别上,您几乎永远不会看到这种断言,因为最终用户并不关心您是否有
html
元素。通过检查用户可以看到的东西,您将获得更多有用的测试。我也更喜欢使用CSS选择器,因为其他东西(JavaScript和CSS)也倾向于使用CSS选择器。我们的整个测试套件可能有一个或两个XPath选择器,用于非常糟糕的情况。

实际上我收回了这一点。我只是在本地运行了Capybara,
find(:xpath,/html')
在Google主页上运行得很好。也许你可以用
page.html
的输出更新你的问题?我已经更新了我的问题。page.html几乎是空的,而response.body具有page.html应该具备的功能:-\这是哪种规格?如果您没有对它进行不同的配置,那么应该是它所在的目录。我问这个问题是因为
response
不是我在Capybara有很多经验的东西,我说“对响应的访问是有限的。一些驱动程序允许访问响应头和HTTP状态代码,但这种功能不是由一些驱动程序提供的,比如Selenium。”lemme添加了我的before块