2017-06-29 60 views
0

我想选择的自由职业者的代码如下(当我们检查浏览器的元素)什么是主要的方式豚

<label for="registration_payer_type_business"><input checked="checked" id="registration_payer_type_business" name="registration[payer_type]" type="radio" value="business"> 
      Company 
      </label> 

<label for="registration_payer_type_freelancer"><input id="registration_payer_type_freelancer" name="registration[payer_type]" type="radio" value="freelancer"> 
      Freelancer 
      </label> 

我已经试过了单选按钮,选择一个单选按钮

page.choose("registration_payer_type_freelancer") 

这并没有给出任何错误,但是当和保存并打开水豚的网页仍然没有选择对付自由职业者的无线电盒。我会很感激,如果人们可以举例使用xpath选择

回答

2

您最可能遇到的真正问题是save_and_open_page将HTML保存为当前属性值而不是当前属性值。这意味着你已经选择了一个单选按钮(它改变了选中的属性值,而不是属性值,不一定会显示)。如果您想查看页面的当前状态,最好使用save_and_open_screenshot。下面说的是你可以选择单选按钮的方式。

要选择特定单选按钮,水豚,如果需要做出独特的,你可以使用id,名称,标签文本和值太大(与名称为实例)

choose('registration_payer_type_freelancer') # id 
choose('registration[payer_type]', option: 'freelancer') # name and value to make unique 
choose('Freelancer') # label text 
choose(option: 'freelancer') # just value if the only radio button with that value 

在所有这些情况下,如果实际的单选按钮输入元素是不可见的(用于造型的目的,等等)的页面上,你想,而不是点击可视标签可以传递allow_label_click: true

choose('registration_payer_type_freelancer', allow_label_click: true) # find by id and select by clicking the label if input is non-visible 

你可以使用其他选项是只是找到CSS(:CSS参数可以忽略,如果默认选择类型为默认设置:CSS)

find(:css, '#registration_payer_type_freelancer').click 

您还可以使用XPath查询来定位元素,但他们真的没有必要的98%的时间(更多的人正确理解CSS并用的作用域它通常可以用来获取任何元素),并且有问题需要注意 - https://github.com/teamcapybara/capybara/blob/master/README.md#beware-the-xpath--trap

find(:xpath, './/input[@value="freelancer"]').click