2017-06-29 58 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