我在查找单选按钮时遇到问题。这是html的片段:
<form action="/" id="frm-info" method="post"><input id="ClickedButton" name="ClickedButton" type="hidden" value="" /><input name="__RequestVerificationToken" type="hidden" value="KTQF3bkKPP0OirvtL1EYsW-Q77zq-8H9YAPqeoBB9ewpNSYoc0dOEout26qrtMmX6xBx0_roxqWRwCXAlwZRTyW9ZBTBjwNgifWqws6hyOFIRmc6O-7P6jZXbZNYJ5Pazt9Hmg2" /> <div class="row borGreyPad mlmrcolor bb0">
<div class="col-sm-12 coverImage">
<div class="col-md-7 col-lg-6 fr xs-fl">
<div class="frm-content axaborderBlue mt10">
<div class="pl25 pt15 pr15 pb10">
<p class="large-heading">Enter some basic information to get started</p>
<div class="row ">
<div class="row pl15">
<div class="col-sm-4 r xs-l mb5 f14">Application Taken: *</div>
<div class="col-sm-8 mb5">
<div class="groupBox">
<span class="dib f14 ">
<input id="ApplicationTaken" name="ApplicationTaken" tabindex="1" type="radio" value="ApplicationInPerson" /><span class="dib mr10 ">In Person</span>
</span>
<span class="dib f14 ">
<input id="ApplicationTaken" name="ApplicationTaken" tabindex="2" type="radio" value="ApplicationByPhone" /><span class="dib mr10 ">By Phone</span>
</span>
</div>
我想选择名称为“ApplicationTaken”且值为“ApplicationInPerson”的单选按钮
我尝试了几种不同的方式,包括:
当我点击名称为
的收音机时"([^"]*)" and value "([^"]*)"$/ do |myName, myValue|
choose("#{myName}", :option => "#{myValue}")
end
和
当我点击名称为
的收音机时"([^"]*)" and value "([^"]*)"$/ do |myName, myValue|
find(:xpath, "//input[@value='#{ myValue }']", match: :first).set(true)
end
我一直看到以下错误:
"Unable to find radio button "ApplicationTaken" with value "ApplicationInPerson".
我也试过ID
,没有运气。我可以在此页面上选择一个按钮并填写文本字段,我无法选择单选按钮或下拉菜单。感谢
答案 0 :(得分:0)
答案 1 :(得分:0)
对于初学者,您有两个具有相同ID的单选按钮。这很糟糕 - 您不应该在页面上有重复的ID。当存在重复时,试图通过ID查找元素是非常不可预测的。
最有可能发生的事情是它找到具有匹配ID的第一个元素,然后检查value属性。当它不匹配时,它表示无法找到该元素,因为它不会继续到下一个匹配的ID(因为id选择器的内部工作方式)
我看到你也在使用xpath来查找元素。您通常应该使用CSS而不是xpath来查找元素。
因此,请保留ID,然后使用CSS,find('input[name=ApplicationTaken][value= ApplicationInPerson]')
应该为您提供您正在寻找的元素。