Я работаю с RSpec и Capybara и столкнулся с проблемой при попытке выбрать конкретную строку на основе: textContent или: text атрибутов, но независимо от строки, введенной в тесте, всегда выбирается первая строка.
HTML-код выглядит следующим образом:
<table class="LearningAssetList admin" data-id="1">
<tbody>
<tr class="CategoryHeader">
<td class="expandCell" colspan="9">
<span>Admin Pro / Scheduling</span>
</td>
</tr>
<tr class="headerRow ui-droppable">
<td class="blank"></td>
<td></td>
<td>Name</td>
<td>Description</td>
<td class="center">Length</td>
<td class="center">User Rating</td>
<td style="width:20px;padding:0px;"></td>
<td style="width:20px;padding:0px;"></td>
</tr>
<tr class="assetRow ui-draggable ui-droppable" data-id="49">
<td class="blank"> </td>
<td class="assetPlay icon">
<td class="assetName">
<a onclick="openModal('http://www.youtube.com/v/C0DPdy98e4c','Learning Asset
Test Upload')" href="#">Learning Asset Test Upload</a>
</td>
<td class="assetDescription">
<td class="assetDuration">
<td class="assetRating icon">
<td class="assetFunctions center">
<td class="assetDrag center">
<td class="blank"> </td>
</tr>
</tbody>
</table>
Мой код RSpec выглядит следующим образом:
it "should allow asset to be deleted by Admins" do
visit 'http://localhost:3000/'
click_link 'Admin'
within(:xpath, '//*[@class="LearningAssetList admin"]') do
#row = find('tr>td.assetName>a', :textContent => "Learning Asset Test Upload")
row = find('tr>td.assetName>a', :textContent => "Learning Asset Test Upload".to_s)
within(row) do
find(:xpath, '//*[@class="popupMenu"]').click
end
sleep 5
find(:xpath, '//*[@class="delete"]').click
popup = page.driver.browser.switch_to.alert
popup.text.should eq('Are you sure you would like to delete this asset?')
popup.accept
assetList = find(:xpath, '//*[@class="LearningAssetList admin"]')
assetList.should have_content('Learning Asset Test Upload')
sleep 5
end
конец
У меня есть еще одна строка в таблице над этой записью, где assetName - просто «Test», и независимо от того, использую ли я текст, textContext или действительно меняю строку, эта строка всегда выбирается, и в этом случае нажимается кнопка дополнительных параметров. строка, которая впоследствии заканчивается удалением неправильного актива.
Может ли кто-нибудь увидеть какие-либо проблемы с кодом RSpec или логикой выбора строки, я думал, что текст в assetName td должен соответствовать строке, которую нужно найти, но, похоже, этого не происходит.