RSpec 및 Capybara로 작업하고 있는데 textContent 또는 : text 특성을 기반으로 특정 행을 선택하려고 할 때 문제가 발생했지만 테스트에 입력 된 문자열과 관계없이 첫 번째 행 항상 선택됩니다. 다음과 같이텍스트 문자열을 기반으로 특정 테이블 행을 찾습니다
HTML 코드는 다음과 같습니다
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을 다음과 같이
<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에 코드가 단순히 "Test"이고 text, textContext를 사용하는지 실제로 문자열을 변경하는지에 관계없이이 행은 항상 선택되며 더 많은 옵션 버튼이이 행에서 눌러집니다 잘못된 자산을 삭제할 수 있습니다.
누구나 RSpec 코드 또는 행을 선택하는 로직에 문제가있는 것을 볼 수 있습니까? assetName TD의 텍스트가 발견 될 행과 일치해야한다고 생각 했었지만 발생하지 않는 것 같습니다.
테스트를 개선하고 오류를 좁히기 위해 할 수있는 많은 일이 있습니다. XPath 구문은 아무런 이점이 없으며 오류가 발생할 가능성이 있습니다. 'within (". LearningAssetList.admin")'과 같은 것을 사용하십시오. ': textContent'는 Capybara 문서 AFAIK의 알려진 속성이 아닙니다. ': text' 옵션은 부분 일치를 수행 중일 수 있습니다. 행의 이름을 완전히 바꿔보십시오. –
안녕하세요 앤드류, 팁 주셔서 감사합니다. – Jay