0

在我的代码中,他们有一张桌子。在该表中,该行不固定。每个人都可以添加它。

在此处输入图像描述

我该表每隔三列文本应该是“待定”。这是条件。我不知道如何检查每三列文本是否有“待处理”。

我正在尝试这个。我不知道天气对不对。

page.should have_selector('tbody tr td:nth-child(3)', text: Pending)

它是我的 html

<table id="thisis" class="table table-bordered table-striped">
    <thead>
        <tr>
            <th>Name</th>
            <th>Default</th>
            <th>Status</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><a href="2">Test1</a></td>
            <td>true</td>
            <td>
                <span class="label label-success">Pending</span>
            </td>
            <td>
                <span><a href="2">View</a></span>
                <span>/</span>
                <span><a href="2/edit">Edit</a></span>
                <span>/</span>
                <span><a href="2/publish">Publish</a></span>
            </td>
        </tr>
        <tr>
            <td><a href="4">test2</a></td>
            <td>true</td>
            <td>
                <span class="label label-success">Pending</span>
            </td>
            <td>
                <span><a href="4">View</a></span>
                <span>/</span>
                <span><a href="4/edit">Edit</a></span>
                <span>/</span>
                <span><a href="4/publish">Publish</a></span>
            </td>
        </tr>
    </tbody>
</table>

感谢您的宝贵回答。

4

1 回答 1

3

方法一:使用计数

假设您在一个页面中有 10 行,并且给定您的状态列具有“状态”类。然后

expect(page).to have_css(".status", text: "Pending", count: 10)

方法二:使用范围

要使用数据对表进行编码,惯例是至少为每一行分配唯一的 id。这将有助于许多功能,而不仅仅是测试。

你需要做的是:

  1. 为每一行分配一个具有数据 id 的唯一 CSS id
  2. 为状态列添加“状态”类,以便于识别

您的视图将如下所示

<tr id="123-row">
  <td>bla blah</td>
  <td><span class="label label-success status">Pending</span>
  ...
</tr>

然后,为了测试,您可以在 Capybara 中执行此操作:

within "##{item.id}-row .status"
  expect(page).to have_content("Pending")
end
于 2013-06-19T14:12:47.540 回答