2016-10-28 33 views
1

我希望將我的find轉換爲使用has_selector。目前我有這方面的工作爲:使用have_selector的多個選擇器

expect(find('div[some-attr=true]'))['some-data-attr']).to eq('Hello World') 

我想將它轉換爲使用have_selector,我嘗試:

expect(page).to have_selector('div[some-attr=true][some-data-attr]') 

我在做什麼錯在這裏?

+0

你試過用CSS選擇器? http://stackoverflow.com/a/34204391/1033737。在你的情況下,它將'expect(page).to have_selector(YOUR_DIV_SELECTOR)' – fabersky

回答

1

這應該是

expect(page).to have_css('div[some-attr=true][some-data-attr="Hello World"]') 

如果「一些數據-ATTR」實際上不是因爲網頁加載已修改的屬性這隻會工作。選擇器匹配屬性值,但由於您的原始方法在返回的元素上調用#[],它可能會訪問具有更改值的屬性。不知道這些屬性名稱實際上是什麼以及它們是如何使用的,不可能肯定地說。如果它實際上是一個屬性,你需要經常使用它在你的應用程序,你可以寫在一個自定義過濾器:CSS選擇

如果Capybara.default_selector ==:CSS然後have_selectorhave_css意思是一樣的,但如果你使用的CSS選擇器,那麼你最好只使用have_css

+0

這個工程...謝謝! –