0

Capybara を使用して、特定の名前を含むテーブル内の行を選択しようとしています。残念ながら、カピバラは表の中の意味不明なものしか認識していないようです。次のコードで得られるものは次のとおりです。

page.all('table tr').map { |e| e.text }
=> ["", "y y y w y", "y y w y", "y y y w y", "y y w y", "y y w y w y"]

更新:処理しようとしているテーブルは次のとおりです。

<table class="views-table cols-5">
  <thead>
    <tr>
      <th class="views-field views-field-phpcode">Status</th>
      <th class="views-field views-field-name">Name</th>
      <th class="views-field views-field-field-id">ID</th>
      <th class="views-field views-field-phpcode-1">Actions</th>
    </tr>
  </thead>
  <tbody>
    <tr class="odd views-row-first">
      <td class="views-field views-field-phpcode">
        <img title="Complete" src="..."><br>Complete
      </td>
      <td class="views-field views-field-name">Harvey</td>
      <td class="views-field views-field-field-id">1</td>
      <td class="views-field views-field-phpcode-1">
        <a class="existing_submit disabled" href="...">Edit</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to reset?" href="...">Reset</a>
        <div style="clear: left;"></div>
        <a class="existing_submit disabled" href="...">Import</a>
        <a class="existing_submit disabled" target="_blank" href="...">View</a>
        <a class="existing_submit" target="_blank" href="...">Replay</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to submit the results?" href="...">Submit</a>
        <a class="existing_submit" target="_blank" href="...">Print</a>
      </td>
    </tr>
    <tr class="even">
      <td class="views-field views-field-phpcode">
        <img title="Complete" src="..."><br>Complete
      </td>
      <td class="views-field views-field-name">Lucas</td>
      <td class="views-field views-field-field-id">2</td>
      <td class="views-field views-field-phpcode-1">
        <a class="existing_submit disabled" href="...">Edit School</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to reset?" href="...">Reset</a>
        <div style="clear: left;"></div>
        <a class="existing_submit disabled" href="...">Import</a>
        <a class="existing_submit disabled" target="_blank" href="...">View</a>
        <a class="existing_submit" target="_blank" href="...">Replay</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to submit the results?" href="...">Submit</a>
        <a class="existing_submit" target="_blank" href="...">Print</a>
      </td>
    </tr>
    <tr class="odd">
      <td class="views-field views-field-phpcode">
        <img title="Complete" src="..."><br>Complete               
      </td>
      <td class="views-field views-field-name">Sarah</td>
      <td class="views-field views-field-field-id">3</td>
      <td class="views-field views-field-phpcode-1">
        <a class="existing_submit disabled" href="...">Edit</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to reset?" href="...">Reset</a>
        <div style="clear: left;"></div>
        <a class="existing_submit disabled" href="...">Import</a>
        <a class="existing_submit disabled" target="_blank" href="...">View</a>
        <a class="existing_submit" target="_blank" href="...">Replay</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to submit the results?" href="...">Submit</a>
        <a class="existing_submit" target="_blank" href="...">Print</a>
      </td>
    </tr>
    <tr class="even">
      <td class="views-field views-field-phpcode">
        <img title="Complete" src="..."><br>Complete           
      </td>
      <td class="views-field views-field-name">Wanda</td>
      <td class="views-field views-field-field-id">4</td>
      <td class="views-field views-field-phpcode-1">
        <a class="existing_submit disabled" href="...">Edit</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to reset?" href="...">Reset</a>
        <div style="clear: left;"></div>
        <a class="existing_submit disabled" href="...">Import</a>
        <a class="existing_submit disabled" target="_blank" href="...">View</a>
        <a class="existing_submit" target="_blank" href="...">Replay</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to submit the results?" href="...">Submit</a>
        <a class="existing_submit" target="_blank" href="...">Print</a>
      </td>
    </tr>
    <tr class="odd views-row-last">
      <td class="views-field views-field-phpcode">
        <img title="Ready" src="..."><br>Ready          
      </td>
      <td class="views-field views-field-name">Herman</td>
      <td class="views-field views-field-field-id">5</td>
      <td class="views-field views-field-phpcode-1">
        <a class="existing_submit disabled" href="...">Edit</a>
        <a class="existing_submit confirm-submit" rel="Are you sure you want to reset?" href="...">Reset</a>
        <div style="clear: left;"></div>
        <a class="existing_submit" href="...">Import</a>
        <a class="existing_submit" target="_blank" href="...">View</a>
        <a class="existing_submit" target="_blank" href="...">Run</a>
        <a class="existing_submit confirm-submit disabled" rel="Are you sure you want to submit the results?" href="...">Submit</a>
        <a class="existing_submit disabled" target="_blank" href="...">Print</a>
      </td>
    </tr>
  </tbody>
</table>

Capybara は Selenium を使用しているため、ロードされたページを確認できますが、テーブルは Capybara が見ているようには見えません。

誰もこのようなものを見たことがありますか?なぜそれが起こっているのですか?

4

1 に答える 1

0

カピバラとノコギリの間には断絶があるようです。属性を使用nativeすると、正しい値が提供されます。

page.all('table tr').map { |e| e.native.text }

残念ながら、フィルターも影響を受けるため、以下は機能しません。

page.should have_selector("table", :text => "Harvey")

于 2013-05-16T15:14:08.047 に答える