Rails capybara歧义匹配,找到50个元素匹配css
Rails capybaraAmbiguous match, found 50 elements matching css
我收到这个错误:
Ambiguous match, found 50 elements matching css "input[value=\"delete\"]"
当我输入以下代码时:
find('input[value="delete"]').first.click
在 html 文件上:
<div id="deletediv-38">
<form class="button_to" onsubmit="return confirm('Are you sure you want to delete?')" method="post" action="/del/38">
<input type="hidden" name="_method" value="delete" />
<input type="submit" name="delete-38" value="delete" />
</form>
</div>
<div id="deletediv-39">
<form class="button_to" onsubmit="return confirm('Are you sure you want to delete?')" method="post" action="/del/39">
<input type="hidden" name="_method" value="delete" />
<input type="submit" name="delete-39" value="delete" />
</form>
</div>
.
.
.
find('input[id="delete-38"]')
不起作用,它说找不到元素。
而且我也不会数数。
当我做
find('input[value="delete"]').count.should_be > 0
我再次收到错误:
Ambiguous match, found 50 elements matching css "input[value=\"delete\"]"
尝试使用 this 代替:
first('input[value="delete"]').click
解释您遇到的错误 -
find 将找到一个唯一元素,如果有 none 或多个匹配,您将得到一个错误。您的 find('input[id="delete-38"]') 失败了,因为根据 html,唯一具有 id 的元素是 div,并且具有 deletediv-xx 格式的 div。如果你试图找到名称为 delete-38 的输入,你会做
find('input[name="delete-38"]')
正如@dimakura 所述,获取您使用的第一个元素 #first. If you want a count of the elements you need to use #all - 就像这样
all('input[value="delete"]').count
如果页面是动态变化的,并且你想知道页面上至少出现一个的次数,那么你可以这样做
all('input[value=delete]', minimum: 1).count
这将使用 Capybaras 的等待行为,至少一个在返回之前出现(或者在等待时超时)
我收到这个错误:
Ambiguous match, found 50 elements matching css "input[value=\"delete\"]"
当我输入以下代码时:
find('input[value="delete"]').first.click
在 html 文件上:
<div id="deletediv-38">
<form class="button_to" onsubmit="return confirm('Are you sure you want to delete?')" method="post" action="/del/38">
<input type="hidden" name="_method" value="delete" />
<input type="submit" name="delete-38" value="delete" />
</form>
</div>
<div id="deletediv-39">
<form class="button_to" onsubmit="return confirm('Are you sure you want to delete?')" method="post" action="/del/39">
<input type="hidden" name="_method" value="delete" />
<input type="submit" name="delete-39" value="delete" />
</form>
</div>
.
.
.
find('input[id="delete-38"]')
不起作用,它说找不到元素。
而且我也不会数数。 当我做
find('input[value="delete"]').count.should_be > 0
我再次收到错误:
Ambiguous match, found 50 elements matching css "input[value=\"delete\"]"
尝试使用 this 代替:
first('input[value="delete"]').click
解释您遇到的错误 -
find 将找到一个唯一元素,如果有 none 或多个匹配,您将得到一个错误。您的 find('input[id="delete-38"]') 失败了,因为根据 html,唯一具有 id 的元素是 div,并且具有 deletediv-xx 格式的 div。如果你试图找到名称为 delete-38 的输入,你会做
find('input[name="delete-38"]')
正如@dimakura 所述,获取您使用的第一个元素 #first. If you want a count of the elements you need to use #all - 就像这样
all('input[value="delete"]').count
如果页面是动态变化的,并且你想知道页面上至少出现一个的次数,那么你可以这样做
all('input[value=delete]', minimum: 1).count
这将使用 Capybaras 的等待行为,至少一个在返回之前出现(或者在等待时超时)