0

我有如下单选按钮

<input id="Overriden" type="radio" value="false" name="Overriden" title="Current Setting" disabled="">Inherit
<input id="Overriden" type="radio" value="true" name="Overriden" checked="checked" title="Current Setting">Override

如何获取文本 Overide 或 Inherit

我努力了

find("#Overriden[checked='checked']").text
find("#Overriden[checked='checked']").label
find("#Overriden[checked='checked']").innerHTML
find("#Overriden[checked='checked']").value ( which gives me true or false which I am not after)

也欢迎 XPATH 解决方案。

谢谢你的帮助!

4

4 回答 4

1

这样做

find("#Overriden", :checked => 'checked').value

我在我的应用程序中这样使用它

find("input[name=payment]", :checked => true).value

因为我的单选按钮组名称是“付款”,所以我设置了属性“已检查”= true/false

因此,如果您到目前为止还没有得到任何解决方案,那么我的回答肯定对您有用。

于 2013-04-08T10:00:26.940 回答
1

这对我有用:

find("[name='my_field_name'][checked]").value

根据您的表单,您的字段名称可能包含尖括号,这很好:

find("[name='payment[payment_type]'][checked]").value

只需查看<input name="my_field_name">您的页面源并使用该名称即可。

于 2016-09-21T13:36:20.980 回答
0

感谢您的回答。我设法用黑客攻击它。我无法更改 HTML,因为这是一个简短的项目,并且该应用程序来自另一个团队。

 settings=[] 
 pos=0
 i=0 
 all("div.inheritence").each do |elem|
   within(elem) do 
    all("#Overriden").each do |input_tag|
     i+=1 
     within(input_tag) do 
       if input_tag[:checked] 
           pos=i 
       end 
     end
    end 
   end 
   set=elem.text 
   settings =set.scan(/\w+/) 
  end 
settings[pos] 
于 2012-12-10T10:14:30.510 回答
0

我事先承认我对 capybara 了解不多,但我知道 html。并且您尝试获取的文本位于元素之外(input元素没有与其直接关联的文本)。这驻留在元素之外往往很难获得。既然如此,我建议将后面的文本放在 alabelspan标签中。所以是这样的:

更改 HTML

<input id="Overriden" type="radio" value="true" name="Overriden" checked="checked" title="Current Setting"><label>Override</label>

然后像这样选择

(这里显示了我缺乏 capybara 的功能:我不知道它是否+在其find字符串中采用 css 相邻兄弟选择器,但是您可以选择与您的inputin capybara 相邻的兄弟(下一个元素)。)

find("#Overriden[checked='checked'] + label").text
于 2012-12-07T15:09:03.217 回答