水豚/黄瓜找不到收音机

时间:2014-10-07 19:47:27

标签: selenium cucumber capybara

我在查找单选按钮时遇到问题。这是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,没有运气。我可以在此页面上选择一个按钮并填写文本字段,我无法选择单选按钮或下拉菜单。感谢

2 个答案:

答案 0 :(得分:0)

因为您正在使用水豚,请尝试:

choose('Visible Text')

请参阅:

https://gist.github.com/zhengjia/428105

答案 1 :(得分:0)

对于初学者,您有两个具有相同ID的单选按钮。这很糟糕 - 您不应该在页面上有重复的ID。当存在重复时,试图通过ID查找元素是非常不可预测的。

最有可能发生的事情是它找到具有匹配ID的第一个元素,然后检查value属性。当它不匹配时,它表示无法找到该元素,因为它不会继续到下一个匹配的ID(因为id选择器的内部工作方式)

我看到你也在使用xpath来查找元素。您通常应该使用CSS而不是xpath来查找元素。

因此,请保留ID,然后使用CSS,find('input[name=ApplicationTaken][value= ApplicationInPerson]')应该为您提供您正在寻找的元素。