2017-03-01 102 views
0

元素InvalidSelector我有這樣的代碼:水豚::騷靈::通過ID和

<td class="activities" id="3"> 
    <a id="3" class="btn add_activity" href="#">+</a> 
</td> 

我想點擊+鏈接。結果表單用javascript打開,所以我需要Poltergeist來點擊它。但它返回一個錯誤:

Capybara::Poltergeist::InvalidSelector: 
     The browser raised a syntax error while trying to evaluate css selector ".activities#28" 

這是我的測試:

it "can open form", js: true do 
    within(".activities#28") do 
    click_link "+" 
    end 
end 

那麼,爲什麼它無法找到元素?

回答

1

你在這裏

  1. 的幾個問題你的CSS選擇器」 .activities#28" 在技術上是非法的。這是因爲CSS選擇器中的ID標識符不能以數字開頭,除非它被轉義。爲了解決這個問題你的CSS選擇器將需要成爲.activities#\32 8

  2. 一旦固定它不會匹配還有你的HTML,因爲顯示的HTML有「3」而不是「28」

  3. 一個id顯示的HTML有兩個具有相同ID(「3」)的元素。這是非法的HTML,因爲ID必須在頁面上唯一。您是否試圖存儲需要綁定到頁面上該元素的記錄的ID?如果是這樣,它可能在一個數據屬性中(這也會改變你的CSS選擇器) - 儘管多次存儲相同的數據也沒有多大意義。

    <td class="activities" data-id="3"> 
        <a class="btn add_activity" href="#" data-id="3">+</a> 
    </td> 
    
+0

感謝你明確的答案!我將更改ID,以便他們遵循Web標準。 – John