【问题标题】:Test of put users in a table html with capybara and expect an xpath使用 capybara 测试将用户放入 table html 并期望 xpath
【发布时间】:2018-07-03 20:03:59
【问题描述】:

我在 Rails 5.1 上的 ruby​​ 视图中有一个用户表,它是这样的:

<table id="users" class="table table-bordered">
  <thead>
    <tr>
      <th></th>
      <th>ID</th>
      <th>Nombre</th>
      <th>Apellidos</th>
      <th>Correo electrónico</th>
      <th colspan="2">Registro</th>
    </tr>
  </thead>
  <tbody>
    <% @users.each do |user| %>
      <tr>
        <td>i</td>
        <td><%= user.id %></td>
        <td><%= user.name %></td>
        <td><%= user.last_name %></td>
        <td><%= user.email %></td>
        <td><%= user.created_at.hour %>:<%= user.created_at.min%> hrs.</td>
        <td><%= user.created_at.to_date %></td>
      </tr>
    <% end %>
  </tbody>
</table>

情况是我正在使用 capybara、rspec 和 factorybot 进行测试,我需要测试我正在创建 10 个用户并将其添加到表中,之后我会期望我的测试有一个 xpath下一个:

 scenario 'admin view users' do
    visit admin_users_path
    users = create_list(:user, 10)
    expect(page).to have_xpath('//*[@id="users"]/tbody/tr/td[5]', text: "#{users.first.email}" )
  end 

问题是我得到了 expect 的错误,我的假设是 xpath 是正确的,但是有些东西无法写入或测试表内的用户。

我的问题是:

当我创建 10 个用户(例如)时如何运行测试,然后将其添加到表中以供后记期望 xpath 正确?

【问题讨论】:

    标签: ruby-on-rails rspec ruby-on-rails-5 capybara factory-bot


    【解决方案1】:

    我找到了解决办法:

    显然,我是在访问页面后创建用户,所以视图永远不会收到数据。我能够通过更改用户的创建顺序来解决它,然后访问该页面,然后我可以正确预期 xpath。

    scenario 'admin view users' do
       users = create_list(:user, 10)
       visit admin_users_path
       expect(page).to have_xpath('//*[@id="users"]/tbody/tr/td[5]', text: "#{users.first.email}" )
    end 
    

    【讨论】:

    • 您为此使用 XPath 是否有特定原因? stackoverflow 上的人们经常阅读显示 XPath 的旧教程,他们只是继续这样做,但现在尽可能使用 CSS 会好得多。在这种情况下expect(page).to have_css('#users tbody td:nth-child(5)' text: users.first.email)。 CSS 更快,更容易阅读,类更好,并且默认情况下不会转义范围(通过使用 // 而不是 .// 开始您的 XPath,如果您在查询范围时会遇到问题 - github.com/teamcapybara/capybara#beware-the-xpath--trap )跨度>
    • 我以前读过很多人使用have_css标签,但直到知道了我才明白为什么!非常感谢您的观察!我会寻找那个! @ThomasWalpole
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多