2017-03-01 7 views
0

を持つ要素のポルターガイスト:: InvalidSelectorは、私はこのようなコードを持っている:カピバラ:: idとクラス

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

をそして私は+リンクをクリックします。結果のフォームはjavascriptで開きますので、私はそれをクリックする必要があります。しかし、それはエラーを返します:

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

あなたがあなたのCSSセレクタ」.activities#28" ここ

  1. いくつかの問題を持っているが、技術的に違法です。これは、CSSセレクタのID識別子がエスケープされていない限り、数字で始めることができないためです。あなたのCSSセレクタになる必要があるだろうことを修正するには.activities#\32 8

  2. 一度示したHTMLが

  3. 「3」ではなく「28」のIDを持っているので、それは、あなたが示されてきたHTMLとは一致しません固定表示されるHTMLには、同じID( "3")を持つ2つの要素があります。 IDはページ上で一意である必要があるため、これは不正なHTMLです。ページ上のその要素に結びつける必要があるレコードのIDを格納しようとしていますか?もしそうなら、代わりにデータ属性に入れることもできます(CSSセレクタも変更されます)。同じものを複数回保存することは意味がありません。あなたの明確な答えのための

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

ありがとう! IDを変更してWeb標準に従うようにします。 – John