2017-04-13 126 views
3

對於看起來很簡單的問題,我一直在這裏呆了很長時間,似乎無法在Google上找到任何東西。我有這樣的按鈕,我需要點擊沒有ID,但一類包含水豚 - 請按類名點擊元素

<button class="filter-case-studies" onclick="initBootpag(filterForContentType('CASE STUDIES', searchHits))" type="button"> 
<b>CASE STUDIES</b> 
(2) 
</button> 

我使用click_on我現在知道的是隻對鏈接和按鈕,這樣當然是行不通的嘗試。這是我到目前爲止有:

When(/^I filter the results to only see case studies$/) do 
    click_on('filter-case-studies') 
end 

我也試過page.find('filter-case-studies').click,這也不起作用。

page.find(:class, 'filter-case-studies').click defdictionts:CSS所以這也失敗了。

有沒有辦法在Capybara中按類名單擊元素?

在此先感謝您的幫助。

回答

-1

感謝舒特先生爲理念,用.選擇。最後,我不得不使用page.find(:class, '.filter-case-studies').click。絕對的導航欄按鈕的方式,所以我不得不包括page.execute_script "window.scrollBy(0,500)"完成測試。

+0

':class'不是由Capybara提供的選擇器類型,所以您顯示的示例將不起作用,除非您註冊了自定義選擇器類型。 –

+0

實際上,根據您使用的水豚的版本,可能會忽略':class'參數並且默認爲:css,否則它會輸出關於'未知選擇器類型'的警告,然後默認爲:css。同樣取決於頁面,增加頁面大小可以消除滾動頁面的需要。 –

0

click_on('.filter-case-studies')

您需要.選擇的課程,併爲# IDS。

+0

啊我明白他們的意思了:css選擇器現在。這似乎幾乎工作,但現在我得到一個錯誤說元素不可點擊點(914.2666625976562,16.133331298828125)。其他元素將獲得點擊:

(Selenium :: WebDriver :: Error :: UnknownError)'由於導航欄是絕對的,它必須得到的方式 – King

+1

'click_on'不採用CSS選擇器,它採用ID,包含文本,ALT,標題等 - 所以這個例子不應該工作 –

+0

這是真的,我不得不使用'page.find(:class,'.filter-case-studies')。click'來使它工作。我將發佈一個合適的解決方案 – King

6

在水豚這樣做的標準方法是

find('button.filter-case-studies').click 

在相對較新的版本中水豚的你也應該能夠做到

click_on(class: 'filter-case-studies')