2016-01-08 32 views
1

我有一個site_prism元素指向一個選擇框。就像這樣:使用site_prism獲取所選選項文本的正確方法是什麼?

class MyPageObject < SitePrism::Page 
    element :my_select_box, '#select-box-id' 
end 

雖然我有一種方式來獲得所選擇的選項值,這一點:

my_page_object.my_select_box.value 

我不能找到一個很好的方式來獲得所選擇的選項的文本。我發現的唯一的解決方法是這樣的:

my_page_object.my_select_box.find("option[selected]").text 

有沒有更好的方式來做到這一點與SitePrism API?由於上述解決方法使用SitePrism和水豚API的混合,這對我來說似乎並不理想。

回答

2

我從來沒有這樣做,而是一種方法很可能是定義:my_select_box的部分,然後有根據該

class SelectSection < SitePrism::Section 
    element :selected, 'option[selected]' 
end 

class MyPageObject < SitePrism::Page 
    section :my_select_box, SelectSection, '#select-box-id' 
end 

所選元素訪問應該讓你訪問

my_page_object.my_select_box.selected.text 

然而,一個很好的問題是你想訪問文本的原因 - 如果是因爲你想根據已知文本來驗證所選項目的文本,最好使用Capybaras選擇器將該元素聲明爲select你可以使用內置查找器opti附件

class MyPageObject < SitePrism::Page 
    element :my_select_box, :select, 'select-box-id' # since it's now using Capybaras :select selector it's no longer a css selector so no # in front 
end 

然後應該讓你做

expect(my_page_object).to have_my_select_box(selected: 'the text expected to be selected') 
+0

你知道在哪裏可以找到有關可用「水豚選擇」文件,例如,你上面提到:選擇,但選擇的是什麼例如一個鏈接,它是:a,或:link或其他東西? 當你用SitePrism方法檢查值時,我從未見過(選中:'文本...)。是否有更多的文件,其中「選擇:」或其他值,例如單選按鈕等記錄在案。 – mickael

+0

@mickael最好的地方是查看提供的選擇器的水豚來源 - 從https://github.com/teamcapybara/capybara/blob/master/lib/capybara/selector.rb#L67開始 –

相關問題